我有一个textview,我想将宽度更改为match_parent,并将高度保留为wrap_content。它嵌套在水平线性布局中。它是3个文本视图中的第2个,每个文本视图的权重为1.当运行此特定片段时,将其他两个按钮设置为
previousButton.setVisibility(View.GONE);
nextButton.setVisibility(View.GONE);
的TextView
<TextView
android:id="@+id/home"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="HOME"
android:layout_weight="1"
android:background="@drawable/button_selector"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:padding="10dp"
android:gravity="center"
android:textColor="#000000"
android:textStyle="bold"
android:onClick="home"
/>
我正在使用以下内容尝试更改片段中的布局:
homeButton.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
当我运行它时,我收到错误:
java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
答案 0 :(得分:2)
你的TextView父布局是什么?线性,相对还是什么? 如果LinearLayout:
示例LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
homeButton.setLayoutParams(params);
您必须在其父布局上创建基础。
答案 1 :(得分:0)
假设您的父母是LinearLayout
LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
homeButton.setLayoutParams(layoutParam);
答案 2 :(得分:0)
您已经给出了layout_width =“0dp”和layout_weight =“1”。所以,当其他两个按钮隐藏时。此主页按钮将采用全宽。但View.INVISIBLE不会删除它们的宽度。你应该使用View.GONE,这样即使它们不可见,也不应该使用宽度。
不可见:
This view is invisible, but it still takes up space for layout purposes.
GONE:
This view is invisible, and it doesn't take any space for layout purposes.
您无需在Home TextView上再次设置布局参数。