哪种方式更好地动态更改TextView的高度

时间:2015-09-13 22:46:52

标签: android textview

textview位于容器视图中,其高度正在变化。详细地说,容器是一个带有几个子节点的relativeLayout,textView就是其中之一。 textView是一个叠加层,需要与容器的高度相同。

<RelativeLayout
    android:layout_height="wrap_content"
    android:layout_width="0dp"
    android:layout_weight="1">

某种程度上,textView的高度在xml中不起作用,它只显示文本的高度。尝试了几种方法而且不起作用。

<TextView
        android:id="@+id/overlay"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"

        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"

        android:text="text"

        android:layout_centerInParent="true"
        android:layout_gravity="center_vertical"
        android:gravity="center"
        android:background="#eeffffff"
        />

似乎在代码中做它是唯一的选择。

    containerView.measure(0, 0);
    int containerHeight = containerView.getHeight();

哪一个更好?

    theTextView.setHeight(containerHeight);

    ViewGroup.LayoutParams param = theTextView.getLayoutParams();
    param.height = containerHeight;
    theTextView.setLayoutParams(param);

1 个答案:

答案 0 :(得分:0)

问题是你正在使用

  

RelativeLayout的

并设置参数

  

机器人:layoutHeight = “WRAP_CONTENT”

我会使用LinearLayout并将高度参数设置为“match_parent”

<LinearLayout
   android:layoutHeight="match_parent"
   android:layoutWidth="match_parent">

   <TextView
      android:layoutHeight="match_parent"
      android:layoutWidth="match_parent">
   </TextView>

</LinearLayout>

基本上,父布局必须占用整个屏幕,以便子TextView占据整个屏幕,因此布局需要适当的大小,然后你可以使用TextView“match_parent”来占用整个布局。我会远离RelativeLayout,除非你必须拥有它,因为相对布局不像LinearLayout那样结构化,有时更难以正确定位。