2016-10-19 2 views
0

У меня есть текстовое представление, что я хочу изменить ширину на match_parent и height, чтобы оставаться на wrap_content. Он вложен в горизонтальный linearlayout. Это второй в 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? Линейный, Относительный или что? Sample если LinearLayout:

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". Итак, когда спрячутся другие две кнопки. Эта кнопка дома будет иметь полную ширину. Но View.INVISIBLE не удалит их из ширины. Вы должны использовать View.GONE, чтобы даже если они не были видны, они не должны брать ширину.

INVISIBLE:

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. 

Вам не нужно устанавливать Layout Params снова на дома TextView.

+0

Разработчик уже использовал свойство View.GONE программно – Madhan

Смежные вопросы