#android #layoutparams
#Android #layoutparams
Вопрос:
У меня есть textview, ширину которого я хочу изменить на match_parent, а высоту оставить в wrap_content. Он вложен в горизонтальное линейное представление. Это 2-й из 3 текстовых представлений, каждый из которых имеет вес 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
Комментарии:
1. Ошибка довольно очевидна. Вы не можете привести
ViewGroup
кLinearLayout
. Итак, я предположил, что вашTextView
родительский макет являетсяLinear
?
Ответ №1:
Каков ваш родительский макет TextView? Линейный, относительный или что? Пример, если LinearLayout:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
homeButton.setLayoutParams(params);
Вы должны создать param base на его родительском макете.
Ответ №2:
Предполагая, что ваш родитель является LinearLayout
LinearLayout.LayoutParams layoutParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
homeButton.setLayoutParams(layoutParam);
Ответ №3:
Вы уже указали layout_width = «0dp» и layout_weight=»1″. Итак, когда другие две кнопки скроются. Эта кнопка «Домой» займет всю ширину. Но посмотреть.НЕВИДИМЫЙ не уберет их с занимаемой ширины. Вы должны использовать View.ИСЧЕЗЛИ так, что даже если они не видны, они не должны занимать ширину.
НЕВИДИМЫЙ:
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.
Вам не нужно снова устанавливать параметры макета в Home TextView.
Комментарии:
1. Разработчик уже использовал представление. ПРОПАВШЕЕ свойство программно