Ответ 1
Единственное решение, которое я нашел, - предоставить ViewStub и связанный с ним TextView то же самое значение android:id
.
У меня есть следующий макет.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/list_item_bottom">
<TextView android:id="@+id/list_item_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<ViewStub android:id="@+id/stub_for_alt_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/list_item_name"
android:layout="@layout/text_view_alt_name"/>
<ImageView android:id="@+id/list_item_dopinfo1_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/stub_for_alt_name"
android:src="@drawable/ic_released"/>
</RelativeLayout>
Я хочу, чтобы ViewStub находился ниже TextView и ImageView, чтобы быть ниже ViewStub.
Элементы с затененным ViewStub показаны, как я ожидаю. Но элементы без ViewStub имеют TextView, перекрывающийся с ImageView.
Что не так с моим расположением?
UPDATE:
Единственное решение, которое я нашел, - предоставить ViewStub и связанный с ним TextView то же самое значение android:id
.
Единственное решение, которое я нашел, - предоставить ViewStub и связанный с ним TextView то же самое значение android:id
.
Я знаю, что это старый вопрос, но трюк заключается в том, чтобы установить параметр inflatedId
таким же, как сам фактический viewStub, например:
<ViewStub android:id="@+id/stub_for_alt_name"
android:inflatedId="@id/stub_for_alt_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/list_item_name"
android:layout="@layout/text_view_alt_name"/>
Это старый вопрос, но у меня есть полезное дополнение
1) Да, как и другие опубликованные, используйте те же id
и inflatedId
:
<ViewStub
android:id="@+id/view_stub_id"
android:inflatedId="@id/view_stub_id"
...
/>
2) Если вам нужно надуть или обновить его содержимое, вам будет удобно действовать следующим образом:
View v = parentView.findViewById(R.id.view_stub_id);
if (v instanceof ViewStub)
v = ((ViewStub) v).inflate();
// here v is always the inflated view
// ...
Hi you can try this one.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/list_item_bottom">
//you can add another relative layout containing your textview and imageview
<RelativeLayout
android:id="@+id/layout_content"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView android:id="@+id/list_item_name"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ImageView android:id="@+id/list_item_dopinfo1_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/stub_for_alt_name"
android:src="@drawable/ic_released"
android:layout_below="@+id/list_item_name" />
</RelativeLayout>
<ViewStub android:id="@+id/stub_for_alt_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/list_item_name"
android:layout="@layout/text_view_alt_name"
android:layout_below="@+id/layout_content" />
</RelativeLayout>