Android EditText从ListView中的其他EditText窃取焦点

Android EditText从ListView中的其他EditText窃取焦点,android,android-layout,listview,android-listview,Android,Android Layout,Listview,Android Listview,我有一个独立的EditText和一个ListView。ListView中的每个项目也有两个EditText字段。当我在列表视图编辑文本中触摸时,独立的编辑文本会窃取焦点。这使得无法编辑任何列表视图编辑文本字段 Name从列表视图“> Name从ListView <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" and

我有一个独立的
EditText
和一个
ListView
。ListView中的每个项目也有两个
EditText
字段。当我在
列表视图
编辑文本
中触摸时,独立的
编辑文本
会窃取焦点。这使得无法编辑任何
列表视图
编辑文本
字段

Name从
列表视图
“>

Name
ListView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="16dip"
  android:orientation = "vertical" >

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginBottom="16dip" >

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginLeft="16dip"
      android:layout_weight="1"
      android:text="@string/name"
      android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
      android:id="@+id/editblindschedule_name"
      android:layout_width="0dip"
      android:layout_height="wrap_content"
      android:layout_weight="5"
      android:ems="10"
      android:inputType="text" />

  </LinearLayout>

  <ListView
    android:id="@+id/listview_editblindschedule"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>
这是活动的XML,包含独立的
EditText
ListView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_marginTop="16dip"
  android:orientation = "vertical" >

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_marginBottom="16dip" >

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginLeft="16dip"
      android:layout_weight="1"
      android:text="@string/name"
      android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
      android:id="@+id/editblindschedule_name"
      android:layout_width="0dip"
      android:layout_height="wrap_content"
      android:layout_weight="5"
      android:ems="10"
      android:inputType="text" />

  </LinearLayout>

  <ListView
    android:id="@+id/listview_editblindschedule"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</LinearLayout>
下面是Java代码

  @Override
  protected void onCreate(Bundle savedInstanceState) 
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_edit_blind_schedule);

    ...

    adapter = new BlindAdapter(this, blindSchedule.getBlindLevels());
    listView = (ListView) findViewById(R.id.listview_editblindschedule);
    listView.setAdapter(adapter);
最后,适配器:

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

      View row = inflater.inflate(R.layout.listview_editblindschedule, parent, false);

      if (!creating) {  // Set default values.

        TextView round = (TextView) row.findViewById(R.id.editblindschedule_round);
        EditText small = (EditText) row.findViewById(R.id.editblindschedule_small);
        EditText big = (EditText) row.findViewById(R.id.editblindschedule_big);

        round.setText("" + (position + 1));
        small.setText("" + blindLevels.get(position).getSmallBlind());
        big.setText("" + blindLevels.get(position).getBigBlind());
      }

      return row;
    }

对我有效的解决方案是将android:WindowsofInputMode=“adjustPan”放在清单中的活动中。这是我唯一需要的更改。

我不喜欢它,但在挖掘
列表视图
代码后,我最终覆盖了
getFocusedChild()
方法,并返回null,因为所有其他旗帜组合试验均未得到满意的解决方案。 即使android:WindowsOfInputMode=“adjustPan”起作用,调整pan也会导致我的布局中出现太多的工件


注意覆盖该方法可能会导致其他不必要的行为,因此在您支持的所有android版本中使用该方法并对其进行全面测试,对于没有/将有此问题的android版本,可能会调用super而不是返回null。

ListView能否获得焦点?
复选框
起作用那么,你确定你没有对
Java
代码中的焦点(?!)做任何奇怪的事情吗?复选框起作用(可以选中或取消选中)。嵌套的
TextEdit
s实际发生的情况是,它们获得500毫秒的焦点,然后光标移动到另一个
TextEdit
。我将发布我的Java代码。你知道是什么导致了这个问题吗?我遇到了完全相同的问题,无法找到解决这个问题的方法。。。