以编程方式更改Textview的高度和宽度

时间:2016-10-19 02:49:13

标签: android layoutparams

我有一个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

3 个答案:

答案 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上再次设置布局参数。