单击可编辑字段会显示键盘和废墟布局

时间:2016-12-22 14:57:39

标签: android android-layout

我有一个看起来像我想要的布局,直到我点击一个可编辑的字段,然后调出软键盘并通过挤压所有内容并隐藏一些字段来破坏我的布局。我试过添加android:windowSoftInputMode="adjustNothing"android:windowSoftInputMode="adjustPan",将内容放在<ScrollView>内,将android:isScrollableContainer="false"添加到许多不同的容器中,以及论坛中的其他方法,但没有任何效果。在显示键盘时是否有其他方法可以保持布局固定?

编辑:找到一个临时修复。我在这里找到了一个问题(没有链接atm),建议用scrollview包围整个内容,并将此属性设置为scrollview android:fillViewport="true"。顶部线性布局不再压扁,但底部的按钮仍然是键盘。

我的布局

<?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="match_parent"
android:orientation="vertical"
android:padding="20dp">

<!-- Linear Layout that holds all Equipment information (List and Details) -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@drawable/linear_layout_border"
    android:orientation="horizontal">

    <!-- Linear Layout for Equipment List -->
    <LinearLayout
        android:id="@+id/equipment_list"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@android:color/darker_gray"
        android:orientation="horizontal"
        android:layout_marginEnd="0dp"
        android:layout_marginRight="0dp">

        <ListView
            android:id="@+id/lvequipments"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:divider="@android:color/transparent"
            android:dividerHeight="1dp"
            android:listSelector="@drawable/wash_count_list_item_states"/>


    </LinearLayout>
    <!-- End Linear Layout for Equipment List -->

    <!-- Linear Layout for Equipment List Details - Hidden Until a primary equipment is selected-->
    <LinearLayout
        android:id="@+id/equipment_list_details"
        android:orientation="vertical"
        android:layout_height="match_parent"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:background="@android:color/background_light"
        android:padding="15dp"
        android:layout_marginStart="0dp"
        android:layout_marginLeft="0dp"
        android:baselineAligned="false"
        android:visibility="invisible">
        <!-- Linear Layouts for Unavailable fields -->
        <LinearLayout
            android:id="@+id/unavailable_count"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:text="@string/work_order_wash_count_unavailable"
                android:textSize="20sp" />

            <View
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="1" />

            <CheckBox
                android:id="@+id/unavailable_count_checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:focusable="false" />
        </LinearLayout>
        <!-- End Linear Layout for Unavailable fields -->

        <!-- Hidden EditText for unavailable reason -->
        <EditText
            android:id="@+id/unavailable_count_reason"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/work_order_wash_count_reason_unavailable"
            android:visibility="gone"/>

        <!-- Linear Layout for PLC replaced or reset -->
        <LinearLayout
            android:id="@+id/plc_replaced"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:text="@string/work_order_wash_count_plc_replaced"
                android:textSize="20sp" />

            <View
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="1" />

            <CheckBox
                android:id="@+id/plc_replaced_checkbox"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:focusable="false" />

        </LinearLayout>
        <!-- End Linear Layout for PLC replaced or reset -->

        <!-- Linear Layout for Single Pass -->
        <LinearLayout
            android:id="@+id/single_pass_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start|bottom"
                android:text="@string/work_order_wash_count_single_pass"
                android:textSize="20sp" />

            <View
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="1" />

            <EditText
                android:id="@+id/single_pass_count"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:gravity="right"
                android:imeOptions="actionNext"
                android:inputType="number"
                android:maxLines="1" />

        </LinearLayout>
        <!-- End Linear Layout for single pass -->

        <!-- Linear Layout for Double pass -->
        <LinearLayout
            android:id="@+id/double_pass_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left|bottom"
                android:text="@string/work_order_wash_count_double_pass"
                android:textSize="20sp" />

            <View
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="1" />

            <EditText
                android:id="@+id/double_pass_count"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:gravity="right"
                android:imeOptions="actionNext"
                android:inputType="number"
                android:maxLines="1" />
        </LinearLayout>
        <!-- End Linear Layout for Double pass -->

        <!-- Linear Layout for Total pass -->
        <LinearLayout
            android:id="@+id/total_pass_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left|bottom"
                android:text="@string/work_order_wash_count_total_pass"
                android:textSize="20sp" />

            <View
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="1" />

            <EditText
                android:id="@+id/total_pass_count"
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:gravity="right"
                android:inputType="number"
                android:maxLines="1" />
        </LinearLayout>
        <!-- End Linear Layout for Total pass -->

        <Button
            android:id="@+id/wash_count_save_button"
            style="@style/body_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/work_order_wash_count_save_button_text"
            android:layout_marginTop="20dp"
            android:layout_gravity="bottom"/>

    </LinearLayout>
    <!-- End Linear Layout for Equipment List Details -->

</LinearLayout>
<!-- End Linear Layout for Equipment Section (List and Details) -->

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
        <Button
            android:id="@+id/close_wash_counts"
            style="@style/body_button"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentBottom="true"
            android:text="@string/close" />
    </LinearLayout>
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

使用此android:windowSoftInputMode="adjustResize"