2013-02-14 42 views
0

我有一個TextView的佈局/對齊問題,我還沒有找到解決方案,也就是說,我想在textview中對齊文本水平。TextView中的文本偏離中心對齊

要多加一點方面,我有一個ImageView的和由側一個TextView側時,ImageView的觸摸屏幕的左邊緣和所述的TextView水平填充屏幕的其餘部分,像這樣:

[-img-|-----text-----] 

TextView配置爲singleLine =「true」和maxLines =「1」,因此如果它的水平空間太長,它將被截斷。我的目標是對齊屏幕中心的文本,而不是TextView的中心,因爲屏幕上還有其他元素與中心對齊,我需要文本對齊來匹配它。

所以,如果我在TextView的使用比重=「中心」,我得到上面的圖片,但我真正想要的是

[-img-|--text--------] 

我試圖把圖像和文字在RelativeLayout的,從而使TextView實際上觸及了屏幕的兩個邊緣,除了如果文字足夠長以外,第一個字符將被圖像隱藏起來,因爲TextView位於圖像視圖的後面,這就是我想要的對齊方式。我還嘗試了左邊的邊距,填充和可繪製的複合物,但文本總是相對於可用空間居中(我會考慮預期的行爲)。

有沒有人有關於如何實現這種對齊的任何線索,即相對於不同於TextView的組件的中心,可能在運行時以編程方式?預先感謝任何有用的建議。

編輯:用戶Budius使用填充到右側,以實現居中對齊其作品,但導致長的文本達到和我在尋找避免該解決方案之前TextView的右邊緣被截斷建議即,如果可能的話,它使用整個可用空間。

+0

您可以用FrameLayout裏實現這一目標,把TextView的作爲第一寬度= match_parent和gravity = center的視圖,然後是帶有layout_gravity left和wrap_content寬度的ImageView。問題在於文字的長度,因爲它可能足夠長以至於處於圖像下。希望有所幫助。 – 2013-02-14 13:23:56

+0

感謝您的迴應,但是這種方法似乎相當於將視圖放入RelativeLayout中的嘗試 - 文本隱藏在圖像背後的可能性正是我想要解決的問題之一。 – handtwerk 2013-02-14 14:24:29

回答

0

嘗試使用

android:layout_weight="1" 

如果它可以幫助你..

+0

謝謝,但我真的不明白這有何幫助,也許你可以解釋? – handtwerk 2013-02-14 14:26:21

+0

我已經共享了一個代碼,這可能不是一個合適的方式(我知道它)。否則FrameLayout是我知道解決您的問題的最佳方式.. – MRX 2013-02-15 04:38:00

2

我相信,將圍繞它和移動20dp到了一邊。

gravity:centrepadding:right=20dp

+0

謝謝,你是正確的,這使我得到了我想要的連接,但結果是長文本被截斷,即使有更多的空間右邊(被填充消耗),看起來有點奇怪。 – handtwerk 2013-02-14 14:22:58

+0

我理解這個問題,但我無法想出任何'簡單'的出路。您可以嘗試以編程方式檢查文本長度並根據需要刪除填充。 – Budius 2013-02-14 16:10:53

0

我知道這是不正確的做法不是太試試看..

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" > 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight=".33" 
    android:src="@drawable/ic_launcher" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_weight=".33" 
    android:gravity="center" 
    android:text="text" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_weight=".33" 
    android:src="@drawable/ic_launcher" 
    android:visibility="invisible" /> 

+0

感謝代碼,它基本上完成了Budius的建議,但引入了同樣的問題,即長文本不會填充整個可用空間(由不可見圖像佔據),但會在右邊被截斷邊緣已經到達。 – handtwerk 2013-02-15 10:19:11