2016-10-19 126 views
0

我有一個textview,我想將寬度更改爲match_parent和高度以保留在wrap_content中。它嵌套在水平線性佈局中。它是在3個textviews其中的每一個具有1的權重的第二當該特定片段運行它設置其他兩個按鈕以編程方式更改Textview的高度和寬度

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

錯誤相當明顯。你不能將'ViewGroup'強制轉換爲'LinearLayout'。所以我認爲你的'TextView'的父級佈局是'Linear'? –

回答

2

什麼是您的TextView父級佈局?線性,相對還是什麼? 樣品如果LinearLayout中:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
homeButton.setLayoutParams(params); 

您必須創建其父佈局PARAM基地。

0

假設你的父母是LinearLayout

LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
homeButton.setLayoutParams(layoutParam); 
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. 

你並不需要在首頁TextView的重新設置佈局PARAMS。

+0

開發人員已經以編程方式使用View.GONE屬性 – Madhan

相關問題