2012-01-28 122 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