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