Диалоговый фрагмент с завершением wrap_content в полноэкранном режиме. Как сделать это как высоту макета, а не полный экран?
Я создал собственный фрагмент диалога и его 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="wrap_content"
android:layout_margin="5dp"
android:padding="5dip" >
<ListView
android:id="@+id/product_list"
android:background="@drawable/border_details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<RelativeLayout
android:id="@+id/AddtoCart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginTop="10dp"
android:background="#005959" >
<Button
android:id="@+id/button_addToCart"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/gradient_button"
android:layout_marginTop="2dp"
android:layout_marginBottom="2dp"
android:text="@string/add_to_cart"
android:textColor="#000000" />
</RelativeLayout>
</RelativeLayout>
Когда я вызываю этот диалог, он принимает полный экран, как показано на скриншоте:
![ScreenShot]()
Как ограничить размер этого диалогового окна высотой списка и кнопкой?
Как удалить лишнее свободное пространство?
Ответы
Ответ 1
Решено, изменив RelativeLayout
на LinearLayout
и установив weight
списка в 1
следующим образом
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical"
android:padding="5dip" >
<ListView
android:id="@+id/product_list"
android:background="@drawable/border_details"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<RelativeLayout
android:id="@+id/AddtoCart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginTop="10dp"
android:background="#005959" >
<Button
android:id="@+id/button_addToCart"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:background="@drawable/gradient_button"
android:text="@string/add_to_cart"
android:textColor="#000000" />
</RelativeLayout>
</LinearLayout>
Ответ 2
Вы указали android:layout_alignParentBottom="true"
для нижней части Относительная компоновка, поэтому она будет принимать снизу экрана, так как высота родительского относительного размещения не является статической.
решение:
- Вы можете изменить ссылку для нижнего относительного макета на → выровнять снизу (внизу) в виде списка
- Или вы можете установить нижний макет в качестве нижнего колонтитула для представления списка.
- Или используйте линейную вертикальную компоновку вместо родительского относительного макета с высотой в качестве содержимого обложки
- Или задайте статическую высоту для родительского относительного макета, чтобы нижний относительный макет получал родительскую относительную высоту макета, и он будет выровнен по отношению к родительскому относительному макету (не забудьте дать выравнивание верхней части нижнего относительного макета к список)