键盘将我的EditText推出屏幕

时间:2014-12-06 11:26:29

标签: android

我的Scrollview中有四个EditText,还有一些复选框和按钮:

  • 姓名
  • 名字
  • 电子邮件
  • 密码

    <ScrollView 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="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical" >
    
    <EditText
        android:id="@+id/register_textedit_firstname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dip"
        android:ellipsize="end"
        android:hint="@string/text_firstname"
        android:inputType="text"
        android:lines="1"
        android:maxLines="1"
        android:scrollHorizontally="true"
        android:singleLine="true" />
    
    <EditText
        android:id="@+id/register_textedit_lastname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dip"
        android:ellipsize="end"
        android:hint="@string/text_lastname"
        android:inputType="text"
        android:lines="1"
        android:maxLines="1"
        android:scrollHorizontally="true"
        android:singleLine="true" />
    
    <EditText
        android:id="@+id/register_textedit_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dip"
        android:ellipsize="end"
        android:hint="@string/text_email"
        android:inputType="textEmailAddress"
        android:lines="1"
        android:maxLines="1"
        android:scrollHorizontally="true"
        android:singleLine="true" />
    
    <EditText
        android:id="@+id/register_textedit_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dip"
        android:ellipsize="end"
        android:hint="@string/text_password"
        android:inputType="textPassword"
        android:lines="1"
        android:maxLines="1"
        android:scrollHorizontally="true"
        android:singleLine="true" />
    
    <CheckBox
        android:id="@+id/register_checkbox_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/checkbox_showpassword" />
    
    <LinearLayout
        style="?android:attr/buttonBarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    
        <Button
            android:id="@+id/register_button_register"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/button_register" />
    
        <Button
            android:id="@+id/register_button_cancel"
            style="?android:attr/buttonBarButtonStyle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/button_cancel" />
        </LinearLayout>
    </LinearLayout>
    
    </ScrollView>
    

此活动的清单:

<activity
        android:name="de.hof.ime_dc.idia_move.activities.RegisterActivity"
        android:label="@string/title_activity_register"
        android:launchMode="singleTask" >
    </activity>

当我关注firstname或lastname时,firstname的EditText被推出顶部屏幕。我看不到它,但我可以输入它。当我关注电子邮件或密码时,EditText名字会回到屏幕上。我无法理解这种行为,因为当第一个名字EditText被推出屏幕时我无法向上滚动(它们都在ScrollView中)。

别误会我的意思,我希望当键盘出现时我的视图被推高但我不希望它们被推出屏幕而不能滚动到它们。

修改

只是一个想法:

也许是因为我的动作标题栏?在每个屏幕上,我都有一个带导航抽屉的动作标题栏。似乎edittext被推到标题栏下面。可能是吗?

编辑2

我注意到它只发生在Android设备上,安卓版5.0。 一个错误?

3 个答案:

答案 0 :(得分:1)

只需在Manifest中添加。这对我有用

android:windowSoftInputMode="stateAlwaysHidden|adjustPan" 

我查了一下。请加上

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

有关详细信息,请参阅此LINK

答案 1 :(得分:0)

您可以将“adjustResize”添加到Manifest文件中以解决此类错误 -

<application ... >
    <activity
        android:windowSoftInputMode="adjustResize" ... >
        ...
    </activity>
    ...
</application>

希望这可以帮助你:)

答案 2 :(得分:0)

问题是,我将其添加到我的布局中:

android:layout_gravity="center"

这是邪恶的根源。