2012-01-28 92 views
2

我有一個簡單的佈局,其中包含兩個ImageViews之間的TextView。Android的textview.setText()失去重力?

當我在運行時使用'setText()'更改TextView時,它會更改,但它會失去「center_horizo​​ntal」重力,並且它會繪製在線性佈局的頂部。

如何讓TextView在「setText()」之後的「center_horizo​​ntal」引力下繪製?

</RelativeLayout 
    android:id="@+id/rl1" 
    style="@style/style1" 
    android:layout_width="fill_parent" 
    android:orientation="horizontal" > 

     ...   

    <LinearLayout 
     android:id="@+id/ll1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_margin="5dp" 
     android:background="@drawable/frame" 
     android:orientation="horizontal" > 

     <ImageView 
      android:id="@+id/iv2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="3dp" 
      android:src="@drawable/icon" /> 

     <TextView 
      android:id="@+id/tv1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      android:text="0" 
      android:textColor="@drawable/white" /> 

     <ImageView 
      android:id="@+id/iv1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="3dp" 
      android:src="@drawable/icon" /> 

    </LinearLayout> 
     ... 
</RelativeLayout> 

謝謝!

回答

1

setText方法通常不影響佈局排序。 我目前只能想到一個可能的問題: 您設置的文本不是很長就是很短,而且您將尺寸指定爲「wrap_content」,則textview的寬度和高度與新內容對齊。這會導致新的佈局合併。 爲了解決這個問題,你可以做到以下幾點:

<TextView 
      android:id="@+id/tv1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:text="0" 
      android:textColor="@drawable/white" /> 
+0

我提出的問題是錯誤的,但問題是一樣的。該屬性是android:gravity =「center_vertical」。我試了你的方式,並將layout_height(而不是寬度)定義爲「fill_parent」。我的文字是幾位數字。它仍然失去重力... – TOMKA 2012-01-28 21:07:25

+0

你可以在設置新文本的位置添加實際的java代碼嗎? – poitroae 2012-01-28 21:13:49

+0

所述的setText()放置在一個處理程序: 處理機=新的處理程序(){ 公共無效的handleMessage(消息MSG){\t \t \t 字符串解析度= msg.getData()的getString( 「數據」); \t \t textview.setText(res); \t \t }; – TOMKA 2012-01-28 21:16:46