2012-02-24 4 views
0

Я хочу добавить два представления один за другим, я использовал этот путь, но я получаю сообщение об ошибке. Это мой XML.динамически добавляя два вида один ниже другого

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 

> 
<ScrollView 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 

> 
     <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/parent" 


     > 

       <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/rel1" 
       android:layout_alignParentTop="true" 

       ></RelativeLayout> 

       <RelativeLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/rel2" 
       android:layout_below="@+id/rel1"     
       ></RelativeLayout> 

     </RelativeLayout> 
    </ScrollView> 
</RelativeLayout> 

В REL1 два Относительные раскладок и REL2 я добавить свои собственные представления, которые собираются быть обращено динамически.

мой код:

setContentView(R.layout.main); 
     RelativeLayout rlstat1=(RelativeLayout)findViewById(R.id.rel1); 
     RelativeLayout rlstat2=(RelativeLayout)findViewById(R.id.rel2); 
     RelativeLayout.LayoutParams para1 = new  RelativeLayout.LayoutParams(
       viewWidth, viewHeight); 
     RelativeLayout.LayoutParams para2 = new  RelativeLayout.LayoutParams(
       viewWidth, viewHeight); 

     rlstat1.setLayoutParams(para1); 
     rlstat1.addView(mView); 

     para2.addRule(RelativeLayout.BELOW, R.id.rel1); 
     rlstat2.addView(mView2); 

Здесь MView и mView2 являются два типа вид, который я хочу установить в двух относительных расположений. ViewWidth и ViewHeight - это ширина и высота экрана, на котором он работает.

Проблема: Если добавлен только один вид, т. Е. MView или mView2 отображается, но если оба представления добавлены (как показано выше), отображается только один относительный макет. Я хочу, чтобы оба моих представления устанавливались один под другим.
Надеюсь, что я понял в своем вопросе. Можете ли вы сказать мне подходящий способ сделать это.

+0

пожалуйста, не используйте относительный расположение здесь. Сделайте scrollview корнем вашего xml, и когда вы используете пользовательские представления, вы можете ссылаться на них в своем xml с именем packagename.class. Используйте линейную компоновку внутри прокрутки с ориентацией на вертикальную ... – L7ColWinters

+0

Получил решение. Это была моя ошибка, просто забыл добавить rlstat2.setLayoutParams (para2); в моем коде, в любом случае большое спасибо. – droid

ответ

1

вы настраиваете макет Params с видом динамически в деятельности, и эти новые компоновки PARAMS объектов, поэтому ваше правило, чтобы добавить REL2 ниже из REL1 очищается, вместо того, чтобы попробовать:

setContentView(R.layout.main); 
     RelativeLayout rlstat1=(RelativeLayout)findViewById(R.id.rel1); 
     RelativeLayout rlstat2=(RelativeLayout)findViewById(R.id.rel2); 
     RelativeLayout.LayoutParams para1 = rlStat1.getLayoutParams(); 

     para1.width=LayoutParams.FILL_PARENT; 
     para1.height=LayoutParams.FILL_PARENT; 
     RelativeLayout.LayoutParams para2 = rlStat2.getLayoutParams(); 

     para2.width=LayoutParams.FILL_PARENT; 
     para2.height=LayoutParams.FILL_PARENT; 
     rlstat1.setLayoutParams(para1); 
     rlstat1.addView(mView); 

     para2.addRule(RelativeLayout.BELOW, R.id.rel1); 
     rlstat2.addView(mView2); 
+0

, но я хочу, чтобы размер rlstat1 и rlstat2 был размером с экран. – droid

+0

Получил решение. Это была моя ошибка, просто забыл добавить rlstat2.setLayoutParams (para2); в моем коде, в любом случае большое спасибо. – droid

+0

проверка отредактированный код – jeet

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