在 Java 中将高度设置为 wrap_content 会使视图拒绝所有预定义的 XML 属性?

setting height to wrap_content in Java makes the view deny all predefined XML attributes?

我在 XML 中创建了一个 TextView 并为其设置了一些规则(例如 layout_bellow="something"),并将其高度设置为 0,以便在单击按钮时高度将设置为 wrap_content。我在下面为负责调整大小的按钮编写了代码,下面是我为 TextView 编写的 XML 代码。问题是,当我单击按钮时,高度变为 match_parentlayout_bellow 属性被忽略,它是从父布局的开始绘制的,宽度(设置为 match_parent) 变成 wrap_content。有什么问题?谢谢。

按钮:

    btnExpand.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            textView.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, height));
        }
    });

XML:

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <LinearLayout
                android:id="@+id/firstRow"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                .
                .
                .
            </LinearLayout>

            <TextView
                android:id="@+id/theTextView"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_below="@id/firstRow"
                android:text="lorem ipsom lorem ipsom">

        </RelativeLayout>

EDIT: here's an image to demonstrate the problem

基本上问题是您正在创建新的 LayoutParams 并将其设置到视图。您已经获得了视图的已设置(xml)LayoutParams 并修改您想要修改的任何内容并将其设置回视图。

LayoutParams layoutParams = textView.getLayoutParams();
//height = LayoutParams.WRAP_CONTENT;or 100 or whatever
layoutParams.height = LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(layoutParams);