Представление с динамическим остановом позиции

#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.