Динамическое относительное расположение в Android

Я пытаюсь иметь два изображения друг на друге. Я могу заставить его нормально работать с файлом 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>

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

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);

    }        

}

person George    schedule 26.04.2011    source источник


Ответы (2)


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

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

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

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

person Aleadam    schedule 27.04.2011
comment
Аледам, я пытаюсь проголосовать за ваш ответ, но он говорит, что мне нужно 15 репутаций. Какая ошибка! Я дважды устанавливаю iv.setImageResource. Никогда не замечал. Теперь работает нормально. Большое спасибо. - person George; 27.04.2011
comment
@ Джордж, да, вы, новые пользователи, можете принимать ответы, но не голосовать. Мне потребовалось некоторое время, чтобы понять, что ошибка тоже! - person Aleadam; 27.04.2011
comment
может быть, я чего-то не понимаю. Я должен был получить 5 репутаций за голосование, но я не могу голосовать, потому что мне нужно 15 репутаций. Так как же получить эти репутации??? Когда я выясню это, я вернусь, чтобы проголосовать за вас, чтобы вы могли получить свои 10. - person George; 27.04.2011
comment
Вы получаете +5 за голосование от других за выигранные вопросы или +10 за голосование за ваши собственные ответы. Я проголосовал за ваш вопрос, потому что он хорошо написан, с четкой проблемой. Удачи! - person Aleadam; 27.04.2011

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

person Leo    schedule 26.04.2011
comment
Несмотря на то, что xml отлично работает с относительным макетом, вы предлагаете сделать это с помощью FrameLoyout? Я попробую это, если никто другой не сможет помочь с кодом выше. Я имею в виду, он работает с xml, почему не динамически? - person George; 27.04.2011
comment
Только что рассмотрел предложенный вами FrameLyout. Очень интересно, как вы предложили. Я постараюсь, как только дети лягут спать. - person George; 27.04.2011