Динамическое добавление контента в RelativeLayout - PullRequest
4 голосов
/ 24 ноября 2010

Поскольку я все еще только изучаю Android (и, похоже, Amazon говорит, что пройдет 2 месяца, пока я получу книгу Hello, Android), я все еще играю в простые вещи.У меня нет проблем с отображением значка одним нажатием кнопки на моем RelativeLayout, используя ImageView .Код для его создания выглядит следующим образом:

private int mIconIdCounter = 1;
private ImageView addIcon(){
    ImageView item = new ImageView(this);
    item.setImageResource( R.drawable.tiles );
    item.setAdjustViewBounds(true);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT );
    if( mIconIdCounter != 1 ){
        params.addRule(RelativeLayout.RIGHT_OF, 1 );
    }
    item.setLayoutParams( params );
    item.setId( mIconIdCounter );
    ++m_IconIdCounter;
    return item;
}

и код для добавления элемента:

Button addButton = (Button)findViewById(R.id.add_new);
addButton.setOnClickListener( new OnClickListener(){
    @Override
    public void onClick(View view) {
        addContentView( addIcon(), new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT ) );
    }
});

Когда я нажимаю мою кнопку, все новые создаваемые видыпомещены друг на друга.Я бы хотел, чтобы они были расположены справа от следующего элемента.Я сделал быстрый поиск в SO статей, относящихся к RelativeLayout, и обнаружил, что они похожи ( здесь , здесь , здесь и здесь ) но в то время как они касались получения контента в RelativeView, они, похоже, не касались аспекта позиционирования.

Что я делаю не так?

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

МойОсновной XML выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <Button
        android:id="@+id/add_new"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/add_new"
        android:layout_alignParentBottom="true" />
</RelativeLayout>

Ответы [ 2 ]

8 голосов
/ 24 ноября 2010

Похоже, вы добавляете представление в корень XML-макета вместо RelativeLayout.

Вы можете попробовать:

RelativeLayout layout = (RelativeLayout)findViewById(R.id.my_layout);
layout.addView(addIcon());
0 голосов
/ 24 ноября 2010

вы создаете новый относительный макет внутри вызова функции.Поэтому каждый раз создается новый относительный макет, который добавляется в вид при нажатии кнопки.Используйте общий относительный макет.

...