当软键盘向上时,如何隐藏底部重力的线性布局视图

时间:2014-03-16 11:31:28

标签: android android-layout

当我的软键盘向上滑动时,如何隐藏带有id:btmFillFormLayout的LinearLayout? 使用软键盘我的线性布局也滑动了3张图片,但我无法点击它们。我需要隐藏它们。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/btmFillFormLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="3dp"
    android:layout_marginTop="10dp"
    android:gravity="center"
    android:isScrollContainer="false" >

    <Button
        android:id="@+id/btn_FillData"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_marginRight="10dp"
        android:background="@drawable/save" />

    <Button
        android:id="@+id/btn_pickNewForm"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:background="@drawable/newicon" />

    <Button
        android:id="@+id/btn_DeleteData"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_marginLeft="10dp"
        android:background="@drawable/delete" />
</LinearLayout>

<LinearLayout
    android:id="@+id/topFillFormLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerVertical="true"
    android:layout_marginBottom="3dp"
    android:layout_marginTop="10dp"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/btn_ChangeDate"
        android:layout_width="96dp"
        android:layout_height="38dp"
        android:layout_marginLeft="10dp"
        android:text="@string/change_date" />
</LinearLayout>

<EditText
    android:id="@+id/editTextToShowDate"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:focusable="false"
    android:inputType="date"
    android:onClick="showDatePickerDialog" >
</EditText>

<EditText
    android:id="@+id/body"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/btmFillFormLayout"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/title"
    android:ems="10"
    android:fadingEdge="vertical"
    android:gravity="top"
    android:hint="Description"
    android:padding="5dp"
    android:scrollbars="vertical"
    android:textSize="22sp" >

    <requestFocus />
</EditText>

<TextView
    android:id="@+id/tvDate"
    android:layout_width="92dp"
    android:layout_height="33dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/topFillFormLayout"
    android:layout_marginLeft="14dp"
    android:gravity="center"
    android:text="@string/empty"
    android:visibility="visible" />

<TextView
    android:id="@+id/tvDiagnoze"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/tvDate"
    android:layout_alignTop="@+id/tvDate"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/tvDate"
    android:gravity="center"
    android:text="@string/empty"
    android:visibility="invisible" />

<TextView
    android:id="@+id/tvVirsutinis"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/tvDiagnoze"
    android:layout_alignRight="@+id/title"
    android:layout_alignTop="@+id/tvDiagnoze"
    android:layout_marginLeft="10dp"
    android:gravity="center"
    android:text="@string/virsutinis"
    android:visibility="invisible" />

<EditText
    android:id="@+id/virsutinisKraujoSpaudimas"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/tvVirsutinis"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/title"
    android:gravity="center"
    android:hint="@string/tritaskis"
    android:inputType="number"
    android:maxLength="3"
    android:singleLine="true"
    android:visibility="invisible" />

<EditText
    android:id="@+id/apatinisKraujoSpaudimas"
    android:layout_width="55dp"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/virsutinisKraujoSpaudimas"
    android:layout_alignTop="@+id/tvApatinis"
    android:ems="10"
    android:gravity="center"
    android:hint="@string/tritaskis"
    android:inputType="number"
    android:maxLength="3"
    android:singleLine="true"
    android:visibility="invisible" />

<TextView
    android:id="@+id/tvApatinis"
    android:layout_width="wrap_content"
    android:layout_height="36dp"
    android:layout_alignLeft="@+id/tvVirsutinis"
    android:layout_below="@+id/virsutinisKraujoSpaudimas"
    android:layout_toLeftOf="@+id/virsutinisKraujoSpaudimas"
    android:gravity="center"
    android:text="@string/apatinis"
    android:visibility="invisible" />

<EditText
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/apatinisKraujoSpaudimas"
    android:ems="10"
    android:hint="@string/no_title"
    android:maxLength="50"
    android:singleLine="true"
    android:textSize="18sp" />

<com.bakalauras.rtaujenis.NoDefaultSpinner
    android:id="@+id/spinner_diagnose"
    android:layout_width="170dp"
    android:layout_height="match_parent"
    android:layout_alignBottom="@+id/topFillFormLayout"
    android:layout_alignLeft="@+id/tvDiagnoze"
    android:layout_alignTop="@+id/topFillFormLayout"
    android:entries="@array/spin_select_diagnose"
    android:prompt="@string/select_diagnose" />

<TextView
    android:id="@+id/tvTemperatura"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/apatinisKraujoSpaudimas"
    android:layout_alignLeft="@+id/tvDiagnoze"
    android:layout_alignTop="@+id/tvVirsutinis"
    android:gravity="center"
    android:text="@string/temperatura"
    android:visibility="invisible" />

<EditText
    android:id="@+id/temperatura"
    android:layout_width="85dp"
    android:layout_height="wrap_content"
    android:layout_above="@+id/apatinisKraujoSpaudimas"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/tvTemperatura"
    android:gravity="center"
    android:hint="@string/tritaskis"
    android:inputType="numberDecimal"
    android:maxLength="5"
    android:singleLine="true"
    android:visibility="invisible" />

<TextView
    android:id="@+id/tvDiabet"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/apatinisKraujoSpaudimas"
    android:layout_alignLeft="@+id/tvDiagnoze"
    android:layout_alignTop="@+id/tvVirsutinis"
    android:gravity="center"
    android:text="@string/diabetas"
    android:visibility="invisible" />

<EditText
    android:id="@+id/diabet"
    android:layout_width="85dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/tvDiagnoze"
    android:layout_alignBottom="@+id/tvDiagnoze"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/tvDiabet"
    android:gravity="center"
    android:hint="@string/tritaskis"
    android:inputType="numberDecimal"
    android:maxLength="5"
    android:singleLine="true"
    android:visibility="invisible" />

<TextView
    android:id="@+id/tvWeight"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/apatinisKraujoSpaudimas"
    android:layout_alignLeft="@+id/tvDiagnoze"
    android:layout_alignTop="@+id/tvVirsutinis"
    android:gravity="center"
    android:text="@string/svoris"
    android:visibility="invisible" />

<EditText
    android:id="@+id/weight"
    android:layout_width="85dp"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/diabet"
    android:layout_alignBottom="@+id/diabet"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/tvWeight"
    android:gravity="center"
    android:hint="@string/tritaskis"
    android:inputType="numberDecimal"
    android:maxLength="7"
    android:singleLine="true"
    android:visibility="invisible" />

</RelativeLayout>

我的问题有两张图片。 [1]:http://imgur.com/4fPOUEE [2]:http://imgur.com/JSjvHR5

1 个答案:

答案 0 :(得分:1)

根据此answer,您可以执行以下操作:

private boolean mIsKeyboardHidden;

@Override
public void onCreate(Bundle savedInstanceState) {
    // Your stuff first

    final View activityRootView = findViewById(android.R.id.content);
    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            final int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
            if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
                mIsKeyboardHidden = !mIsKeyboardHidden;
            }

            if (mIsKeyboardHidden) {
                layout.setVisibility(View.VISIBLE);
            } else {
                layout.setVisibility(View.INVISIBLE);
            }
        }
    });
}