当软键盘出现时,如何调整包含LeftBar和RightBar的布局

时间:2013-07-15 20:09:39

标签: android android-layout

layout picture

我的应用程序左右栏有一些控件,那些栏应该是固定的。正文由用户编辑输入信息的文本字段。当出现软键盘(这是自定义的)时,键盘上方的相应编辑文本应该是可见的

我知道Manifest中存在android:windowSoftInputMode这样的选项,但我找不到我的问题。我可以让我的布局向上移动到键盘上方(带有条形),这是不可接受的,或者保持布局没有任何移动,所以我得到了键盘隐藏的编辑文本编辑。

请帮我解决这个问题?

我的布局示例:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

    <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginLeft="100.0dip"
            android:layout_marginRight="200.0dip"
            android:orientation="vertical">

        <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginLeft="30dip"
                android:layout_marginRight="30dip">

            <TextView
                    android:id="@+id/createuser_textView_logo"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentTop="true"
                    android:text="@string/createuser_text_logo"
                    style="@style/TextActivityLogo"/>


            <ScrollView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_below="@+id/createuser_textView_logo"
                    android:layout_marginBottom="20dp">

                <RelativeLayout
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content">

                    <TextView
                            android:id="@+id/createuser_textView_text"
                            android:layout_alignParentLeft="true"
                            android:text="@string/createuser_text_text"
                            style="@style/TextActivityText"/>

                    <com.mycompany.myapp.views.MyEditText
                            android:id="@+id/createuser_editText_username"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentRight="true"
                            android:layout_below="@+id/createuser_textView_text"
                            android:hint="@string/createuser_edit_username"
                            android:nextFocusDown="@+id/createuser_editText_password"
                            style="@style/MyEditText"/>

                    <com.mycompany.myapp.views.MyEditText
                            android:id="@+id/createuser_editText_password"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentRight="true"
                            android:layout_below="@+id/createuser_editText_username"
                            android:hint="@string/createuser_edit_password"
                            android:inputType="textPassword"
                            android:nextFocusUp="@+id/createuser_editText_username"
                            android:nextFocusDown="@+id/createuser_editText_firstname"
                            style="@style/MyEditText"/>

                    <com.mycompany.myapp.views.MyEditText
                            android:id="@+id/createuser_editText_firstname"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentRight="true"
                            android:layout_below="@+id/createuser_editText_password"
                            android:hint="@string/createuser_edit_firstname"
                            android:nextFocusUp="@+id/createuser_editText_password"
                            android:nextFocusDown="@+id/createuser_editText_lastname"
                            style="@style/MyEditText"/>

                    <com.mycompany.myapp.views.MyEditText
                            android:id="@+id/createuser_editText_lastname"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentRight="true"
                            android:layout_below="@+id/createuser_editText_firstname"
                            android:hint="@string/createuser_edit_lastname"
                            android:nextFocusUp="@+id/createuser_editText_firstname"
                            android:nextFocusDown="@+id/createuser_editText_email"
                            style="@style/MyEditText"/>


                    <com.mycompany.myapp.views.MyEditText
                            android:id="@+id/createuser_editText_email"
                            android:layout_alignParentLeft="true"
                            android:layout_alignParentRight="true"
                            android:layout_below="@+id/createuser_editText_lastname"
                            android:hint="@string/createuser_edit_email"
                            android:imeOptions="actionDone|flagNoExtractUi"
                            android:inputType="textWebEmailAddress"
                            android:nextFocusUp="@+id/createuser_editText_lastname"
                            style="@style/MyEditText"/>

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

    <com.mycompany.myapp.views.LeftNavigationBar
            android:id="@+id/left_nav_bar"
            android:layout_width="100dp"
            android:layout_height="wrap_content"/>

    <com.mycompany.myapp.views.RightNavigationBar
            android:id="@+id/right_nav_bar"
            android:layout_width="200dip"
            android:layout_height="fill_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"/>

</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

似乎您希望键盘改变屏幕上的某些布局,而其他布局应保持不变。我不确定这是否可以正常行为。

但是,如果您可以grab the event when the soft keyboard shows up,那么您可以更改listview scroll position以显示所需的文字视图。如果键盘即使滚动到顶部也会阻止布局,您只需在列表视图中添加边距即可。