如何在RelativeLayout中更改TextView的LayoutParameters?

时间:2016-05-16 15:15:42

标签: android textview android-relativelayout

我需要动态更改其中包含的TextViewGravity文本的大小。 TextView最初位于RelativeLayout内的左上角。我需要扩展它以覆盖整个RelativeLayout并以其为中心显示其文本内容。然后我需要将其恢复到初始设置。

我的问题是我无法回到初始设置:TextView的高度保持RelativeLayout的高度,TextView的文本内容保持在垂直轴的中心(宽度和水平对齐正确重置)。

以下是XML的摘录:

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:baselineAligned="false"
    android:layout_weight="1"
    android:id="@+id/Row0">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/A1"
        android:tag="A1"
        android:padding="@dimen/default_cell_padding"
        android:layout_weight="1"
        android:onClick="setGUICellSelected"
        android:clickable="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_margin="@dimen/default_cell_margin">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1"
            android:id="@+id/A11"
            android:tag="A11"
            android:textSize="@dimen/tipFontSize"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true" />

以下是代码(重新排列以显示逻辑流程):

RelativeLayout.LayoutParams relativeLayoutLayoutParamsCenteredInParent = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.MATCH_PARENT,
    RelativeLayout.LayoutParams.MATCH_PARENT);
RelativeLayout.LayoutParams relativeLayoutLayoutParams = new RelativeLayout.LayoutParams(
    RelativeLayout.LayoutParams.WRAP_CONTENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);
...
textView.setLayoutParams(relativeLayoutLayoutParamsCenteredInParent);
textView.setGravity(Gravity.CENTER);
...
textView.setLayoutParams(relativeLayoutLayoutParams);
textView.setGravity(Gravity.TOP + Gravity.LEFT);

relativeLayoutLayoutParams变量的构造函数中设置宽度和高度的正整数值而不是RelativeLayout.LayoutParams.WRAP_CONTENT没有影响。

relativeLayoutLayoutParams变量中保存TextView“A11”的初始LayoutParamaters而不是使用上面的构造函数也不起作用。

我应该如何设置relativeLayoutLayoutParams变量,以便将textView恢复到原始大小,并将文本内容左右对齐,然后将其扩展为与父级匹配?或者我应该使用除LayouParameters以外的其他东西吗?

*****编辑*****

API = 15时会出现问题,而不是更高的API级别。

0 个答案:

没有答案