java - Android - ListView EditText 焦点问题

标签 java android listview focus android-edittext

我有一个 EditText,用作 ListView 的页脚 View。我正在尝试访问焦点/失去焦点事件,但由于某种原因,每个焦点都会触发多次。这是怎么回事?

// in onCreate

// ...

// the footer
View v = getLayoutInflater().inflate( R.layout.comment_edittext, null );

EditText commentEditText = (EditText)v.findViewById( R.id.comment_edittext );
commentEditText.setOnFocusChangeListener( new OnFocusChangeListener() {

    @Override
    public void onFocusChange( View v, boolean hasFocus )
    {
        U.log("View: " + v.getClass().getName().toString() );

        if( hasFocus )
        {
            U.log( "Clicked" );
        }
        else
        {
            U.log( "Un Clicked" );
        }
    }
} );

// add the footer
commentListView.addFooterView( v );

// ...

调出键盘的单次触摸的输出是:

04-11 10:22:17.449: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.459: E/004 - X(4576): Clicked
04-11 10:22:17.569: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.569: E/004 - X(4576): Un Clicked
04-11 10:22:17.569: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.569: E/004 - X(4576): Clicked
04-11 10:22:17.689: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.689: E/004 - X(4576): Un Clicked
04-11 10:22:17.709: E/004 - X(4576): View: android.widget.EditText
04-11 10:22:17.709: E/004 - X(4576): Clicked

我可以理解它在 hasFocus 设置为 true 的情况下调用多个事件,但为什么还有 false ,触发未点击日志?

编辑:此外,每当我上下滚动ListView,将EditText移入和移出 View 时,它都会调用这些事件以及。我是否使用了错误的监听器类型?

最佳答案

根据个人经验,ListView 中的 EditText 是一个祸根。由于 View 的回收和渲染方式,焦点的行为很奇怪。我建议以其他方式解决这个问题。其实,如果是评论文本框,一直可见不是更好吗?

示例布局:

  <LinearLayout 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"> 
    <ListView 
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_weight="1"/> 
    <EditText 
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"/>  
  </LinearLayout>

关于java - Android - ListView EditText 焦点问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10109072/

相关文章:

java - 如何使用 java.util Random 类在 2 个时间间隔内生成随机 double ?

java - Z3 for Java 中关于 check() 的性能

android - 在 SQLite select 语句中将整数格式化为格式化日期

android - 带有显示图像和文本的自定义适配器的 ListView

android - ListView 中的 EditText 在聚焦时被键盘隐藏

java - Nashorn 的 Object.bindProperties() 方法

java - 在 JavaFX 中同时处理 KeyEvent 和 MouseEvent

Android在迭代时切换开关按钮

java - 如何禁用表单中的按钮,直到用户填写重要字段

android - 需要 call_phone 权限吗?