Установка параметров в дочерних представлениях RelativeLayout - PullRequest
4 голосов
/ 07 октября 2010

У меня проблемы с поиском именно того синтаксиса, который мне нужен, чтобы установить параметры для дочерних представлений относительного макета. У меня есть корневой относительный макет, который я хочу установить 2 дочерних текстовых представления рядом друг с другом, как это

---------- ---------
| Second | | First |
---------- ---------

Итак, у меня есть

public class RL extends RelativeLayout{

    public RL(context){

        TextView first = new TextView(this);
        TextView second = new TextView(this);

        first.setText('First');
        first.setId(1);

        second.setText('Second');
        second.setId(2);

        addView(first, new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT, 
    LayoutParams.ALLIGN_PARENT_RIGHT ???);

        addView(first, new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT, 
    LayoutParams.ALLIGN_RIGHT_OF(first.getId()) ???);

    }
}

Как установить относительные выравнивания?

Ответы [ 2 ]

14 голосов
/ 08 октября 2010
public class RL extends RelativeLayout {

    public RL(Context context) {
        super(context);

        TextView first = new TextView(context);
        TextView second = new TextView(context);

        first.setText("First");
        first.setId(1);

        second.setText("Second");
        second.setId(2);

        RelativeLayout.LayoutParams lpSecond = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        addView(second, lpSecond);

        RelativeLayout.LayoutParams lpFirst = new RelativeLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        lpFirst.addRule(RelativeLayout.RIGHT_OF, second.getId());
        addView(first, lpFirst);
    }

}

ALIGN_PARENT_RIGHT нужен только в том случае, если вы хотите, чтобы правый край представления совпал с правым краем его родителя. В этом случае это будет толкать «первый» вид сбоку видимой области!

3 голосов
/ 08 октября 2010

Falmarri, вам нужно использовать метод 'addRule (int)'.

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams
    (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RIGHT_OF, first.getId());

Полный список констант, которые можно использовать для addRule, можно найти здесь: http://developer.android.com/reference/android/widget/RelativeLayout.html

А вот ссылка на метод addRule: http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html#addRule(int,%20int)

...