如何使用内部布局的软键盘正确转发EditText组件而不重叠?

时间:2011-11-25 14:29:06

标签: android android-layout

我正在我的应用程序的ExpandableListActivity中设计一个小表单,它由大量的EditText组件组成,其中大部分都是数字字段。

为了提高填充的可用性,我将属性android:imeOptions="actionNext|actionDone"放在每个EditTexts中,这样每当用户在软键盘上按Enter键时,焦点就会转发到下一个输入字段。

这是有效的,接下来是重点,但是当要聚焦的下一个EditText位于另一个LinearLayout内时,键盘不会向下平移并且其内部聚焦字段保持与键盘重叠。

有关如何使其适用于此内部编辑框的任何输入?

这是布局:

<EditText
     android:imeOptions="actionNext|actionDone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:numeric="integer" />

<TextView
    style="@android:style/TextAppearance.Medium"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="FC (bat/min):"
    android:textColor="@color/monthview_grid_color" />

<EditText
    android:imeOptions="actionNext|actionDone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:numeric="integer" />

<TextView
    style="@android:style/TextAppearance.Medium"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="FR (inc/min):"
    android:textColor="@color/monthview_grid_color" />

<EditText
    android:imeOptions="actionNext|actionDone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:numeric="integer" />

<TextView
    style="@android:style/TextAppearance.Medium"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="PA:"
    android:textColor="@color/monthview_grid_color" />

<LinearLayout
     android:imeOptions="actionNext|actionDone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <EditText
        android:imeOptions="actionNext|actionDone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:numeric="integer" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="X" />

    <EditText
        android:imeOptions="actionNext|actionDone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.0"
        android:numeric="integer" />
</LinearLayout>

<TextView
    style="@android:style/TextAppearance.Medium"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Sat. (%):"
    android:textColor="@color/monthview_grid_color" />

<EditText
    android:imeOptions="actionNext|actionDone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:numeric="integer" />

这是我的AndroidManifest.xml中关于相关活动的剪辑:

<activity android:name=".activities.FormActivity" android:windowSoftInputMode="adjustPan" />

1 个答案:

答案 0 :(得分:1)

您可以尝试在linearlayout上方设置编辑文本的android:nextFocusDown。你只需要在最后一个元素上使用actionNext和actionDone。

此外,不推荐使用数字,而是使用inputType =“number”。