布局被推高了

时间:2015-06-06 18:25:10

标签: android android-layout

我有一个非常简单的布局,我设计用于实现屏幕顶部的工具栏。我在这里使用权重来适应所有设备。将11表示为工具栏,将89表示给内容正文。无论如何,这都适合所有屏幕。

问题

我在内容正文中有一个滚动视图,在滚动视图中我有4 EditText个视图。当我点击最后一个EditText键入其中时,我的布局会被推高,特别是我必须使用权重的工具栏。 现在请不要告诉我不要使用重量,只要告诉我如何解决它。我怎么能阻止布局推升?就像Gmail客户端一样。当你输入标题时没有向上推,保留在那里你可以保存或发送电子邮件。

enter image description here

main.xml中

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

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

        <RelativeLayout
            android:id="@+id/header"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="#ffe234"
            android:layout_weight="11" >

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerInParent="true"
                android:text="Memories" />
        </RelativeLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="89" >

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

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

                    <EditText
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:ems="10" />

                    <EditText
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:ems="10" />

                    <EditText
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:inputType="textMultiLine"
                        android:minLines="6"
                        android:ems="10" />
                </LinearLayout>
            </ScrollView>
        </LinearLayout>
    </LinearLayout>

</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

请使用weight ="0.11"weight ="0.89"
而不是 <{1}} amd weight ="11"在您的布局中。

答案 1 :(得分:0)

在您的清单中,您希望添加编辑或添加android:windowSoftInputMode。如果您不想调整屏幕,请将其设置为adjustNothing。

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:windowSoftInputMode="adjustPan|adjustNothing">
</activity>

文档

  

机器人:windowSoftInputMode

http://developer.android.com/guide/topics/manifest/activity-element.html

  

adjustNothing 0x30不要调整窗口大小或平移窗口以为软输入区域腾出空间;窗口永远不会为它调整。

http://developer.android.com/reference/android/R.attr.html#windowSoftInputMode

答案 2 :(得分:0)

布局正在向上推,因为当输入法出现时,滚动视图会调整到整个屏幕。

尝试使用ScrollView的属性isScrollContainer,将其设置为false。

它应如下所示:

...
     <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:isScrollContainer="false" >

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

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ems="10" />

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ems="10" />

                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="textMultiLine"
                    android:minLines="6"
                    android:ems="10" />
            </LinearLayout>
        </ScrollView>
...

如果这对您在AndroidManifest.xml中的活动中设置正确的windowSofInputMode没有帮助。