【问题标题】:Wrong EditText get focus in ListView错误的 EditText 在 ListView 中获得焦点
【发布时间】:2015-05-19 07:20:45
【问题描述】:

我在 ListView 中有 EditText。当焦点位于第一个项目上时单击下一步后焦点丢失并且下一步按钮更改为新行按钮。在其他项目上,一切正常。

我的列表行布局:

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

    <EditText
        android:id="@+id/field"
        style="@style/EditText.Form.Field"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:paddingLeft="@dimen/double_default_padding"/>

    <Button
        android:id="@+id/required"
        style="@style/Button.Gray"
        android:layout_width="@dimen/required_button_width"
        android:layout_height="@dimen/required_button_height"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="@dimen/default_padding"
        android:gravity="center"
        android:padding="0dp"
        android:text="@string/form_field_required"
        android:textColor="@color/white"/>

【问题讨论】:

    标签: android listview android-listview android-edittext


    【解决方案1】:
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="@dimen/field_row_height">
    
            <EditText
                android:id="@+id/field"
                style="@style/EditText.Form.Field"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:paddingLeft="@dimen/double_default_padding">
        <requestFocus />
        </EditText>
            <Button
                android:id="@+id/required"
                style="@style/Button.Gray"
                android:layout_width="@dimen/required_button_width"
                android:layout_height="@dimen/required_button_height"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="@dimen/default_padding"
                android:gravity="center"
                android:padding="0dp"
                android:text="@string/form_field_required"
                android:textColor="@color/white"/>
    
    
    
    
    listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); android:windowSoftInputMode="adjustPan"          in your activity or android:descendantFocusability="beforeDescendants"
    

    【讨论】:

    • 还是同样的问题。请注意,它是 ListView 中的行布局。
    • 考虑这三行 android:paddingLeft="@dimen/double_default_padding"> //还是打开edittext //for focus //关闭edittext块
    • 我看到了,但没用。
    • listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); android:windowSoftInputMode="adjustPan" 在你的活动或 android:descendantFocusability="beforeDescendants"
    • listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);它有助于!非常感谢!
    【解决方案2】:

    试试这个

    <EditText
            android:id="@+id/field"
            style="@style/EditText.Form.Field"
            android:layout_width="match_parent"
            android:focusable="true"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:paddingLeft="@dimen/double_default_padding"/>
    

    你忘了这个

    android:focusable="true"
    

    【讨论】:

    • 它没有改变任何东西。
    【解决方案3】:

    如果您在视图打开时放置请求焦点,则请求的小部件获得焦点。

    <EditText
                android:id="@+id/field"
                style="@style/EditText.Form.Field"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:paddingLeft="@dimen/double_default_padding">
        <requestFocus />
        </EditText>
    

    【讨论】:

    • 我知道如何转移焦点。唯一的问题是它不会在第一端第二行之间转移焦点,而是转移到其他位置。
    【解决方案4】:

    解决方案:

    listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 2011-08-11
      相关资源
      最近更新 更多