#android
#Android
Вопрос:
Button b1 = new Button(this);
b1.setText(R.string.hello);
RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.top_menu);
//android:layout_alignParentRight=true
layout1.addView(b1);
Есть ли какой-нибудь способ расположить b1 в layout1? Я хочу, чтобы он плавал правильно. Или это единственный способ заменить полный макет новым увеличенным макетом?
Ответ №1:
Используйте методы addRule() для позиционирования представлений в RelativeLayout. Существует 2 метода, один для позиционирования относительно контейнера (самого RelativeLayout. Ваш случай) и другое для позиционирования относительно других представлений в контейнере.
Button b1 = new Button(this);
b1.setText(R.string.hello);
RelativeLayout layout1 = (RelativeLayout) findViewById(R.id.top_menu);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); // Relative layout parameters which specify how the child view will be sized (wrap_content in our case)
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); // addRule to position it how you need it
layout1.addView(b1, params);
Комментарии:
1. используются ли эти параметры для b1 или layout1? потому что оно сосредоточено в родительском элементе layout1, а не в самом layout1
2. Проверьте ширину и высоту вашего RelativeLayout. Если у вас есть wrap_content для них обоих, это означает, что размер RL будет таким же, как у вашего b1, поэтому нет ни left, ни right.