очень новый для android здесь! Я в основном смущен тем, как изменить высоту и ширину представления. В настоящее время у меня есть такие (фрагменты):Правильный способ изменения высоты и ширины вида Android
XML (использует относительные макеты)
<View
android:id="@+id/homeBackgroundTop"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_centerHorizontal="true"
android:background="@color/colorAccent" />
Java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int screenWidth = size.x;
int screenHeight = size.y;
final float pixelToDp = getResources().getDisplayMetrics().density;
int screenHeightDp = (int) (screenHeight * pixelToDp + 0.5f);
int screenWidthDp = (int) (screenWidth * pixelToDp + 0.5f);
View view = findViewById(R.id.homeBackgroundTop);
view.setLayoutParams(new RelativeLayout.LayoutParams(screenWidthDp, screenHeightDp));
setContentView(R.layout.activity_main);
}
Проблема она поднимает следовать FATAL ERROR:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setLayoutParams(android.view.ViewGroup$LayoutParams)' on a null object reference
Нет Мой вопрос в том, как я могу правильно изменить высоту и ширину вида? Я просмотрел многие другие ответы, но никто из них, похоже, не работает для меня.
P.S. Что именно такое RelativeLayout.LayoutParams
? Если я пытаюсь изменить представление, почему я должен называть макет? Почему он иногда также содержит LinearLayout
? Наконец, что такое LayoutParams? Если у вас есть ссылки на любой из этих вопросов, мы будем благодарны :) Спасибо за помощь!
Спасибо, только что вернулся, чтобы сделать то, о чем вы упоминали, и оно работает! :) Спасибо!! ** О да **, так что же такое «RelativeLayout.LayoutParams»? Почему я добавляю часть RelativeLayout? Разве я не добавляю параметры в 'View'? Почему это не 'View.Params'? Пожалуйста, уточните, если вы знаете! –
Отредактированный мой ответ, чтобы добавить мои два цента на ваш вопрос – user3331142
Хорошо спасибо. Мне просто интересно, потому что я устанавливаю Height и Width специально для 'View', который находится внутри' RelativeLayout'. Поэтому я не был точно уверен, почему я буду устанавливать параметры родителям. Если я найду что-нибудь еще, я также дам вам знать! :) –