2016-10-19 23 views
0

幅をmatch_parentに変更し、高さをwrap_contentのままにしたいというテキストビューがあります。これは、水平線形レイアウト内にネストされます。この特定の断片は、それがプログラムでテキストビューの高さと幅を変更する

previousButton.setVisibility(View.GONE); 
nextButton.setVisibility(View.GONE); 

のTextViewに他の二つのボタンを設定し実行された場合には、1の重みをそれぞれ有する3 textviewsで2番目である

  <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" 
       /> 

Iはに次を使用していフラグメントレイアウトを変更しよう:

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の場合:あなたは、その親のレイアウト上のparamベースを作成する必要があります

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

。あなたの親と仮定すると

0

LinearLayout

LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
homeButton.setLayoutParams(layoutParam); 
0

であるあなたは既にlayout_width = "0dp" とlayout_weight = "1" を与えています。したがって、他の2つのボタンが非表示になると、このホームボタンは全幅になります。しかし、View.INVISIBLEは幅を取らないようにします。表示されていなくても、幅を取らないように、View.GONEを使用する必要があります。

INVISIBLE:

GONE
This view is invisible, but it still takes up space for layout purposes. 

This view is invisible, and it doesn't take any space for layout purposes. 

あなたはホームのTextViewに再レイアウトのparamsを設定する必要はありません。

+0

開発者は既にプログラムでView.GONEプロパティを使用しています – Madhan

関連する問題