编辑文本时,按钮出现在软键盘上方

时间:2014-04-24 10:19:07

标签: android button relativelayout android-softkeyboard

我正在开发一个使用相对布局和所有这些东西的Android应用程序...... 结构如下:

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:isScrollContainer="false"
    tools:context=".RegistryHotel" >

    <!-- FOOTER BAR -->

    <Button
        android:id="@+id/buttonRegisterLater"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"
        android:background="@drawable/toolbar_register"
        android:text="@string/registerLater"
        android:textColor="@color/white"
        android:textSize="15sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/buttonRegister"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_above="@id/buttonRegisterLater"
        android:layout_marginBottom="2dp"
        android:background="@drawable/toolbar_register"
        android:text="@string/register"
        android:textColor="@color/white"
        android:textSize="15sp"
        android:textStyle="bold" />

    <!-- TITLE -->

    <TextView
        ... />

    <!-- NAME -->

    <TextView
    ... />

    <EditText
        ... />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@id/registerFormName"
        android:background="@android:color/darker_gray" />

    <!-- EMAIL -->

    <TextView
        ... />

    <EditText
        ... />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@id/registerFormName"
        android:background="@android:color/darker_gray" />


    <!-- HOTEL -->

    <TextView
        ... />

    <EditText
        ... />

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@id/registerFormEmail"
        android:background="@android:color/darker_gray" />

    <!-- TERMS OF SERVICE -->

    <LinearLayout 
        android:id="@+id/linearListAndCheck"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_marginTop="1dp"
        android:layout_below="@id/registerFormHotel"
        android:layout_above="@id/buttonRegister">

        <ListView
            android:id="@+id/listPossibleHotels"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:layout_marginTop="2dp"
            android:background="@color/white"
            android:visibility="invisible" />

        <TextView
            android:id="@+id/registerFormInfo"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="bottom"
            android:paddingLeft="20dp"
            android:paddingRight="20dp"
            android:paddingTop="30dp"
            android:layout_weight="1"
            android:text="@string/registerFormInfo"
            android:textSize="13sp"
            android:textStyle="bold" />

        <CheckBox 
            android:id="@+id/registerFormTermsOfService"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
                        android:layout_marginRight="20dp"
            android:checked="true"
            android:text="@string/registryTermsOfService" />

    </LinearLayout>     


    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@id/registerFormHotel"
        android:background="@android:color/darker_gray"
        android:paddingLeft="20dp" />

</RelativeLayout>

问题在于,当我开始在第三个EditText(HOTEL)中编写时,两个按钮都出现在隐藏ListView的SoftKeyboard上方,我必须在那里播放查询结果。 关于这是怎么回事?

非常感谢。

2 个答案:

答案 0 :(得分:1)

原因是android:layout_alignParentBottom =&#34; true&#34;。你应该将相对布局转换为linearlayout,对于页脚,你应该使用&#39; android:gravity =&#34; bottom&#34;&#39;

你应该像下面的代码转换为linearlayout

<LinearLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:isScrollContainer="false"
android:orientation="vertical"
tools:context=".RegistryHotel" >

<!-- TITLE -->

<TextView
    ... />

<!-- NAME -->

<TextView
... />

<EditText
    ... />

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

<!-- EMAIL -->

<TextView
    ... />

<EditText
    ... />

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


<!-- HOTEL -->

<TextView
    ... />

<EditText
    ... />

   <View
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:layout_below="@id/registerFormHotel"
    android:background="@android:color/darker_gray"
    android:paddingLeft="20dp" />

 <!-- TERMS OF SERVICE -->

<LinearLayout 
    android:id="@+id/linearListAndCheck"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_marginTop="1dp">

    <ListView
        android:id="@+id/listPossibleHotels"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="5"
        android:layout_marginTop="2dp"
        android:background="@color/white"
        android:visibility="invisible" />

    <TextView
        android:id="@+id/registerFormInfo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:paddingTop="30dp"
        android:layout_weight="1"
        android:text="@string/registerFormInfo"
        android:textSize="13sp"
        android:textStyle="bold" />

    <CheckBox 
        android:id="@+id/registerFormTermsOfService"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:checked="true"
        android:text="@string/registryTermsOfService" />

</LinearLayout>     

<!-- FOOTER BAR -->

<Button
    android:id="@+id/buttonRegisterLater"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:background="@drawable/toolbar_register"
    android:text="@string/registerLater"
    android:textColor="@color/white"
    android:textSize="15sp"
    android:gravity="bottom"
    android:textStyle="bold" />

<Button
    android:id="@+id/buttonRegister"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_marginBottom="42dp"
    android:gravity="bottom"
    android:background="@drawable/toolbar_register"
    android:text="@string/register"
    android:textColor="@color/white"
    android:textSize="15sp"
    android:textStyle="bold" />

 </LinearLayout>

之后请不要忘记在下面的活动代码中添加windowSoftInputMode。

 <activity
        android:name="com.test.MainActivity"
        android:configChanges="orientation|keyboardHidden|screenSize|keyboard"
        android:label="@string/app_name"
        android:windowSoftInputMode="adjustPan" >

答案 1 :(得分:0)

在您的特定活动代码的清单中声明此内容。

<activity
android:windowSoftInputMode="adjustPan"
 />