在 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_parent
,layout_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);
我在 XML 中创建了一个 TextView 并为其设置了一些规则(例如 layout_bellow="something"
),并将其高度设置为 0,以便在单击按钮时高度将设置为 wrap_content
。我在下面为负责调整大小的按钮编写了代码,下面是我为 TextView 编写的 XML 代码。问题是,当我单击按钮时,高度变为 match_parent
,layout_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);