键盘显示后,BottomSheetDialog中的Listview不会调整大小

时间:2017-11-29 07:35:10

标签: android android-layout listview android-softkeyboard bottom-sheet

我有自定义底部工作表对话框布局,其中包括页眉布局,listview和页脚布局。

这是布局细节

Here is the layout details

当键盘显示时,包含按钮的页脚布局会调整大小,而不是listview

这是我的dialog_bottom_sheet.xml

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/azure_dialog"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="4dp"
        android:background="@color/azure_meta_dark"
        android:gravity="center_horizontal"
        android:padding="8dp"
        android:text="Header"
        android:textAllCaps="true"
        android:textColor="@color/accent" />

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="@dimen/bookmark_group_list_size"
        android:choiceMode="multipleChoice"
        android:divider="@null"
        android:listSelector="@drawable/selector_item_default"
        android:scrollbars="none" />

    <LinearLayout
        android:id="@+id/footer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:layout_marginTop="12dp"
        android:orientation="horizontal"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin">

        <Button
            android:id="@+id/button_cancel"
            style="@style/Base.Widget.AppCompat.Button.Borderless"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginRight="8dp"
            android:layout_weight="5"
            android:background="@drawable/selector_button_main"
            android:fontFamily="sans-serif"
            android:padding="4dp"
            android:text="@string/option_button_cancel"
            android:textAllCaps="false"
            android:textColor="@color/accent"
            android:textSize="16sp"
            android:textStyle="normal" />

        <Button
            android:id="@+id/button_save"
            style="@style/Base.Widget.AppCompat.Button.Borderless"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="4dp"
            android:layout_weight="5"
            android:background="@drawable/selector_button_main"
            android:fontFamily="sans-serif"
            android:padding="8dp"
            android:text="@string/option_button_save"
            android:textAllCaps="false"
            android:textColor="@color/accent"
            android:textSize="16sp"
            android:textStyle="normal" />

    </LinearLayout>

</LinearLayout>
</ScrollView>

我想如果键盘显示,listview调整大小而不是按钮。

1 个答案:

答案 0 :(得分:0)

我通过为视图设置宽度和高度属性并为列表视图添加了布局权重,在xml中做了一些小改动

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/azure_dialog"
    android:orientation="vertical"
    android:weightSum="1">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="4dp"
        android:background="@color/azure_meta_dark"
        android:gravity="center_horizontal"
        android:padding="8dp"
        android:text="Header"
        android:textAllCaps="true"
        android:textColor="@color/accent" />

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:choiceMode="multipleChoice"
        android:divider="@null"
        android:listSelector="@drawable/selector_item_default"
        android:scrollbars="none"
        android:layout_weight="1" />

    <LinearLayout
        android:id="@+id/footer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="12dp"
        android:layout_marginTop="12dp"
        android:orientation="horizontal"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin">

        <Button
            android:id="@+id/button_cancel"
            style="@style/Base.Widget.AppCompat.Button.Borderless"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginRight="8dp"
            android:layout_weight="5"
            android:background="@drawable/selector_button_main"
            android:fontFamily="sans-serif"
            android:padding="4dp"
            android:text="@string/option_button_cancel"
            android:textAllCaps="false"
            android:textColor="@color/accent"
            android:textSize="16sp"
            android:textStyle="normal" />

        <Button
            android:id="@+id/button_save"
            style="@style/Base.Widget.AppCompat.Button.Borderless"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginLeft="4dp"
            android:layout_weight="5"
            android:background="@drawable/selector_button_main"
            android:fontFamily="sans-serif"
            android:padding="8dp"
            android:text="@string/option_button_save"
            android:textAllCaps="false"
            android:textColor="@color/accent"
            android:textSize="16sp"
            android:textStyle="normal" />

    </LinearLayout>

</LinearLayout>
</ScrollView>