父底部视图隐藏在打开键盘上的父中心布局视图

时间:2016-08-06 09:38:53

标签: android

我正在进行布局,我在屏幕中央对齐了一个cardview,并在屏幕底部与我们button联系。键盘关闭时,此布局看起来不错。

如下所示: - enter image description here

layout.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:weightSum="2">

                <ImageView
                    android:id="@+id/login_image"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:background="@drawable/login_background" />

                <View
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:background="@color/grey_background" />

            </LinearLayout>


            <android.support.v7.widget.CardView
                android:id="@+id/media_card_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_marginLeft="24dp"
                android:layout_marginRight="24dp"
                card_view:cardBackgroundColor="@color/white"
                card_view:cardElevation="4dp"
                card_view:cardCornerRadius="5dp"
                >

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"

                    >

                    <ImageView
                        android:id="@+id/logoImageView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:background="@color/grey_background"
                        android:padding="15dp"
                        android:src="@drawable/logo_login"
                        />

                    <EditText
                        android:id="@+id/usertext"
                        android:layout_width="match_parent"
                        android:layout_height="40dp"
                        android:layout_below="@id/logoImageView"
                        android:layout_marginLeft="20dp"
                        android:layout_marginRight="20dp"
                        android:layout_marginTop="20dp"
                        android:background="@drawable/edittext_background"
                        android:hint="User ID"
                        android:maxLength="50"
                        android:padding="10dp"
                        android:singleLine="true"
                        android:textColorHint="@color/hint_text_color"
                        android:textSize="16sp" />


                    <FrameLayout
                        android:id="@+id/passwordLayout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/usertext"
                        android:layout_marginTop="8dp"
                        android:orientation="horizontal">

                        <EditText
                            android:id="@+id/passtext"
                            android:layout_width="match_parent"
                            android:layout_height="40dp"
                            android:layout_marginLeft="20dp"
                            android:layout_marginRight="20dp"
                            android:background="@drawable/edittext_background"
                            android:fontFamily="sans-serif"
                            android:hint="@string/password"
                            android:inputType="textPassword"
                            android:maxLength="50"
                            android:padding="10dp"
                            android:singleLine="true"
                            android:textColorHint="@color/hint_text_color"
                            android:textSize="16sp" />

                        <ImageView
                            android:id="@+id/passwordeye"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="right|center_vertical"
                            android:padding="8dp"
                            android:layout_marginRight="25dp"
                            android:src="@drawable/eye_close" />

                    </FrameLayout>

                    <LinearLayout
                        android:id="@+id/termsLayout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/passwordLayout"
                        android:layout_marginLeft="15dp"
                        android:layout_marginRight="20dp"
                        android:layout_marginTop="15dp"
                        android:gravity="center"
                        android:orientation="horizontal">


                        <ImageView
                            android:id="@+id/check_box"
                            android:layout_width="wrap_content"

                            android:layout_height="wrap_content"
                            android:padding="5dp"
                            android:src="@drawable/checkbox_checked" />

                        <TextView
                            android:id="@+id/terms_and_cond"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:textColor="@color/black"
                            android:textColorLink="#80000000"
                            android:textSize="13sp" />
                    </LinearLayout>

                    <View
                        android:id="@+id/lineView"
                        android:layout_width="match_parent"
                        android:layout_height="1dp"
                        android:layout_below="@id/termsLayout"
                        android:layout_marginTop="15dp"
                        android:background="@color/grey_background" />

                    <LinearLayout
                        android:id="@+id/newuser_login_layout"
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:background="@color/dark_grey"
                        android:layout_below="@id/lineView"
                        android:orientation="horizontal">


                        <TextView
                            android:id="@+id/newUserButton"
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:background="@drawable/translucent_round_button"
                            android:gravity="center"
                            android:text="New User ?"
                            android:textColor="@color/grey_text_color"
                            android:textSize="17sp" />

                        <TextView
                            android:id="@+id/loginbutton"
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:background="@drawable/bottom_round_button"
                            android:gravity="center"
                            android:text="Login"
                            android:textColor="@color/white"
                            android:textSize="17sp" />

                    </LinearLayout>
                </RelativeLayout>
            </android.support.v7.widget.CardView>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_gravity="center"
                android:gravity="center"
                android:orientation="vertical">


                <TextView
                    android:id="@+id/contactus_button"
                    android:layout_width="wrap_content"
                    android:layout_height="35dp"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="15dp"
                    android:background="@drawable/contact_us_selector"
                    android:drawableLeft="@drawable/contact_us_green"
                    android:drawablePadding="5dp"
                    android:gravity="center"
                    android:padding="8dp"
                    android:text="Contact Us"
                    android:textColor="@color/black" />

                <TextView
                    android:id="@+id/textviewone"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="10dp"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:gravity="center"
                    android:textColor="@color/black"
                    android:textColorLink="#80000000"
                    android:textSize="13sp" />

            </LinearLayout>
        </RelativeLayout>
    </ScrollView>

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/snackbarCoordinatorLayout"
        android:layout_width="match_parent"

        android:layout_height="match_parent"
        >

    </android.support.design.widget.CoordinatorLayout>

    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/android:progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="gone" />
</FrameLayout>

问题: -

当键盘打开然后联系我们button,上面屏幕底部的文字隐藏在中心布局后面。我希望它不应该隐藏,在打开键盘屏幕时应该滚动并联系我们button应该在底部。

在打开键盘时,它看起来像: -

enter image description here

5 个答案:

答案 0 :(得分:1)

只需添加一行......

在清单文件的必需活动中添加android:windowSoftInputMode="stateHidden|adjustPan"

答案 1 :(得分:0)

滚动视图中的

添加android:isScrollContainer =“false”属性

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:isScrollContainer="false">

 </ScrollView>

答案 2 :(得分:0)

此处的问题是,您的CardViewandroid:layout_centerInParent="true",而包含“与我们联系”内容的LinearLayoutandroid:layout_alignParentBottom="true"

我会重新考虑你的布局,它有点乱,但也许你可以用android:layout_alignParentBottom="true"替换LinearLayout中的android:layout_below="@+id/media_card_view"

答案 3 :(得分:0)

android:windowSoftInputMode="adjustResize"应该可以解决问题。

"adjustResize" The activity's main window is always resized to make room for the soft keyboard on screen.

https://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

答案 4 :(得分:0)

这是我的布局:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                android:weightSum="2">

                <ImageView
                    android:id="@+id/login_image"
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:background="@android:color/holo_blue_bright"/>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="0dp"
                    android:layout_weight="1"
                    android:background="@android:color/darker_gray"/>

            </LinearLayout>


            <android.support.v7.widget.CardView
                android:id="@+id/media_card_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_marginLeft="24dp"
                android:layout_marginRight="24dp"
                card_view:cardBackgroundColor="@android:color/white"
                card_view:cardCornerRadius="5dp"
                card_view:cardElevation="4dp"
                >

                <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"

                    >

                    <ImageView
                        android:id="@+id/logoImageView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:background="@android:color/darker_gray"
                        android:padding="15dp"
                        />

                    <EditText
                        android:id="@+id/usertext"
                        android:layout_width="match_parent"
                        android:layout_height="40dp"
                        android:layout_below="@id/logoImageView"
                        android:layout_marginLeft="20dp"
                        android:layout_marginRight="20dp"
                        android:layout_marginTop="20dp"
                        android:background="@android:drawable/editbox_background"
                        android:hint="User ID"
                        android:maxLength="50"
                        android:padding="10dp"
                        android:singleLine="true"
                        android:textColorHint="@color/colorPrimaryDark"
                        android:textSize="16sp"/>


                    <FrameLayout
                        android:id="@+id/passwordLayout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/usertext"
                        android:layout_marginTop="8dp"
                        android:orientation="horizontal">

                        <EditText
                            android:id="@+id/passtext"
                            android:layout_width="match_parent"
                            android:layout_height="40dp"
                            android:layout_marginLeft="20dp"
                            android:layout_marginRight="20dp"
                            android:background="@android:drawable/editbox_background"
                            android:fontFamily="sans-serif"
                            android:hint="Password"
                            android:inputType="textPassword"
                            android:maxLength="50"
                            android:padding="10dp"
                            android:singleLine="true"
                            android:textColorHint="@color/colorPrimaryDark"
                            android:textSize="16sp"/>

                        <ImageView
                            android:id="@+id/passwordeye"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="right|center_vertical"
                            android:layout_marginRight="25dp"
                            android:padding="8dp"
                            android:src="@android:drawable/ic_menu_edit"/>

                    </FrameLayout>

                    <LinearLayout
                        android:id="@+id/termsLayout"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/passwordLayout"
                        android:layout_marginLeft="15dp"
                        android:layout_marginRight="20dp"
                        android:layout_marginTop="15dp"
                        android:gravity="center"
                        android:orientation="horizontal">


                        <ImageView
                            android:id="@+id/check_box"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:padding="5dp"
                            android:src="@android:drawable/checkbox_on_background"/>

                        <TextView
                            android:id="@+id/terms_and_cond"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:textColor="@android:color/black"
                            android:textColorLink="#80000000"
                            android:textSize="13sp"/>
                    </LinearLayout>

                    <View
                        android:id="@+id/lineView"
                        android:layout_width="match_parent"
                        android:layout_height="1dp"
                        android:layout_below="@id/termsLayout"
                        android:layout_marginTop="15dp"
                        android:background="@android:color/darker_gray"/>

                    <LinearLayout
                        android:id="@+id/newuser_login_layout"
                        android:layout_width="match_parent"
                        android:layout_height="50dp"
                        android:layout_below="@id/lineView"
                        android:background="@android:color/darker_gray"
                        android:orientation="horizontal">


                        <TextView
                            android:id="@+id/newUserButton"
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:gravity="center"
                            android:text="New User ?"
                            android:textColorHint="@android:color/darker_gray"
                            android:textSize="17sp"/>

                        <TextView
                            android:id="@+id/loginbutton"
                            android:layout_width="0dp"
                            android:layout_height="match_parent"
                            android:layout_weight="1"
                            android:gravity="center"
                            android:text="Login"
                            android:textColor="@android:color/white"
                            android:textSize="17sp"/>

                    </LinearLayout>
                </RelativeLayout>
            </android.support.v7.widget.CardView>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@id/media_card_view"
                android:orientation="vertical"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:gravity="center_horizontal"
                android:layout_below="@+id/media_card_view">

                <TextView
                    android:id="@+id/textView"
                    android:layout_width="wrap_content"
                    android:layout_height="35dp"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="15dp"
                    android:drawableLeft="@android:drawable/sym_contact_card"
                    android:drawablePadding="5dp"
                    android:padding="8dp"
                    android:text="Contact Us"
                    android:textColor="@android:color/black"
                    android:layout_gravity="center"/>


                <TextView
                    android:id="@+id/textviewone"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_marginBottom="10dp"
                    android:layout_marginLeft="15dp"
                    android:layout_marginRight="15dp"
                    android:gravity="center_horizontal"
                    android:text="Copyright by piotrek1543 @2016"
                    android:textColor="@android:color/black"
                    android:textColorLink="#80000000"
                    android:textSize="13sp"/>
            </LinearLayout>
        </RelativeLayout>
    </ScrollView>


    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/android:progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:visibility="gone"/>

</FrameLayout>

以下是打开键盘之前的外观

之后:

首先,打开您的AndroidManifest并在LoginActivity部分中填写此行:

     android:windowSoftInputMode="stateVisible|adjustResize">

之后,您的Activity清单应如下所示:

    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar"
        android:windowSoftInputMode="stateVisible|adjustResize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>

然后使用textoneviewtextview1字段修改LinearLayout,如下所示:

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@id/media_card_view"
            android:orientation="vertical"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:gravity="center_horizontal"
            android:layout_below="@+id/media_card_view">

            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="35dp"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="15dp"
                android:drawableLeft="@android:drawable/sym_contact_card"
                android:drawablePadding="5dp"
                android:padding="8dp"
                android:text="Contact Us"
                android:textColor="@android:color/black"
                android:layout_gravity="center"/>


            <TextView
                android:id="@+id/textviewone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:gravity="center_horizontal"
                android:text="Copyright by piotrek1543 @2016"
                android:textColor="@android:color/black"
                android:textColorLink="#80000000"
                android:textSize="13sp"/>
        </LinearLayout>

希望它会有所帮助

编辑:如果您想保留linearLayout的BottomSheetStyle,可以使用以下代码:

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignBottom="@id/media_card_view"
            android:orientation="vertical"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:gravity="center_horizontal|bottom"
            app:layout_behavior="@string/bottom_sheet_behavior"
            >

            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="35dp"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="45dp"
                android:layout_marginBottom="15dp"
                android:drawableLeft="@android:drawable/sym_contact_card"
                android:drawablePadding="5dp"
                android:padding="8dp"
                android:text="Contact Us"
                android:textColor="@android:color/black"
                android:gravity="center"
                android:layout_gravity="center"/>


            <TextView
                android:id="@+id/textviewone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="10dp"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:gravity="center_horizontal"
                android:text="Copyright by piotrek1543 @2016"
                android:textColor="@android:color/black"
                android:textColorLink="#80000000"
                android:textSize="13sp"/>
        </LinearLayout>

所以它看起来像:

但打开键盘后会看到

您的&#34;联系我们&#34;将隐藏在CardView后面。如果您希望两个TextView都考虑减少media_card_view的大小。对我来说,它太大了,无法看到两种观点。