2010-11-24 6 views
4

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

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, и нашел некоторые похожие (here, here, here и here), но в то время как эти адреса позволяли получать контент в RelativeView, они, похоже, не касались аспекта позиционирования.

Что я делаю неправильно?

EDIT:

Мой главный 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> 

ответ

8

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

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

RelativeLayout layout = (RelativeLayout)findViewById(R.id.my_layout); 
layout.addView(addIcon()); 
+0

так что если мой основной xml - это не что иное, как RelativeLayout и кнопка внутри него, как мне получить к нему доступ? Также как (R.id.main)? Я обновлю свой вопрос, чтобы показать вам. – wheaties 2010-11-24 19:07:50

+0

вам нужно указать свой идентификатор с помощью андроида: id = "+ @ id/my_layout". Затем вы можете указать свой макет в своем коде. чтобы вы могли добавлять к нему представления. надеюсь, что это поможет! – Knossos 2010-11-24 21:00:39

0

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

Смежные вопросы