Правило добавления RelativeLayout «RelativeLayout.LEFT_OF» не работает

У меня есть относительный макет, как показано ниже:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:id="@+id/parent" >

    <ListView 
        android:layout_width="360dp"
        android:layout_height="600dp"
        android:id="@+id/list"
        android:inputType="text"
        android:maxLines="1"
        android:layout_margin="50dp"
        android:layout_alignParentRight="true"
        />
</RelativeLayout>

В коде Java я хочу добавить представление слева от списка, но это не сработало :

m_relativeLayout = (RelativeLayout)findViewById(R.id.parent);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
layoutParams.addRule(RelativeLayout.LEFT_OF, m_listView.getId());
Button button2 = new Button(this);
button2.setText("I am button 2");
m_relativeLayout.addView(button2, layoutParams);

только если я установлю список на alignParentRight, он будет работать. Это баг андроида или я что-то пропустил?

Я всегда пытаюсь addView(View child, int index, LayoutParams params), но это может работать только в линейном макете. Итак, есть ли нормальное решение для работы RelativeLayout.LEFT_OF?

РЕДАКТИРОВАТЬ

Я пробовал RelativeLayout.BELOWи RelativeLayout.RIGHT_OF, и они работали отлично, значит, у меня недостаточно места для кнопки? Я пытался дать больше места, но это все равно не работает.

Я использую Toshiba AT100 (1280*800) и альбомную ориентацию, поэтому места достаточно. Тест снизуи справатакой же, как слева. Я думаю, что если я помещу элемент управления A в относительный макет, затем я добавлю элемент управления B и объявлю его слева от элемента управления A, результатом должен быть элемент управления B, который подтолкнет элемент управления A вправо, верно?

15
задан Onik 11 December 2018 в 20:23
поделиться