Динамический относительный макет в Android

#android #layout #dynamic #android-relativelayout

#Android #макет #динамический #android-relativelayout

Вопрос:

Я пытаюсь разместить два изображения друг напротив друга. Я могу заставить его нормально работать с XML-файлом, но я хотел бы сделать это динамически. ctdeasyone — это прозрачное изображение.

Итак, это работает нормально..

 <?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">

    <ImageView 
        android:id="@ id/bck1" 
        android:src="@drawable/fish2"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"        
        android:scaleType="fitXY" 
        android:layout_gravity="center">
    </ImageView>

    <ImageView 
        android:id="@ id/bck2" 
        android:src="@drawable/ctdeasyone"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"        
        android:scaleType="fitXY" 
        android:layout_gravity="center">
    </ImageView>

</RelativeLayout>
  

Когда я делаю это. отображается только второе изображение (оно прозрачное). Может ли кто-нибудь из экспертов дать совет по этому поводу? Здесь новичок… Это мой первый вопрос. TIA.

 public class TwoPicksOnEachOther extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Grabbing the Application context         
        final Context context = getApplication();                   

        RelativeLayout relativeLayout = new RelativeLayout(this);                   

        final ImageView iv = new ImageView(this);         
        iv.setImageResource(R.drawable.fish2);


        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(     
                RelativeLayout.LayoutParams.FILL_PARENT, 
                RelativeLayout.LayoutParams.FILL_PARENT);
        relativeLayout.addView(iv,lp);        

        // Creating transparent image
        final ImageView iv2 = new ImageView(this);
        iv.setImageResource(R.drawable.ctdeasytwo);
        RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(     
                RelativeLayout.LayoutParams.FILL_PARENT, 
                RelativeLayout.LayoutParams.FILL_PARENT);
        relativeLayout.addView(iv2,lp2);
        setContentView(relativeLayout);

    }        

}
  

Ответ №1:

Мне пришлось поместить его в эмулятор и поиграть с ним некоторое время, пока я его не увидел:

 iv.setImageResource(R.drawable.fish2);
(...)
iv.setImageResource(R.drawable.ctdeasytwo);
  

Вы никогда не устанавливаете ресурс изображения для iv2!

Я изменил это, и теперь я вижу два изображения, как и ожидалось.

Комментарии:

1. Алеадам, я пытаюсь проголосовать за твой ответ, но там сказано, что мне нужно 15 репутаций. Какая ошибка! Я дважды устанавливаю iv.setImageResource. Никогда не замечал. Теперь работает нормально. Большое спасибо.

2. @George да, вы, новые пользователи, можете принимать ответы, но не голосовать. Мне потребовалось некоторое время, чтобы разобраться и с этой ошибкой!

3. возможно, я чего-то не понимаю. Предполагалось, что я получу 5 репутаций за голосование, но я не могу проголосовать, потому что мне нужно 15 репутаций. Итак, как вы получаете эти репутации??? Когда я разберусь с этим, я вернусь, чтобы проголосовать за вас, чтобы вы могли получить свои 10.

4. Вы получаете 5 за положительные отзывы от других по вашим выигранным вопросам или 10 за положительные отзывы по вашим собственным ответам. Я поддержал ваш вопрос, потому что он хорошо написан, с явной проблемой. Удачи!

Ответ №2:

Это идеально подходит для FrameLayout . Поскольку вы хотите, чтобы изображения располагались прямо друг над другом.

Комментарии:

1. Несмотря на то, что xml отлично работает с относительной компоновкой, вы предлагаете сделать это с помощью FrameLoyout? Я попробую это, если никто другой не сможет помочь с приведенным выше кодом. Я имею в виду, это работает с xml, почему бы не динамически?

2. Только что повторно просмотрел предложенный вами фреймворк. Очень интересно, как вы и предлагали. Я постараюсь, как только дети лягут спать.