0

我在ExpandableListView, 的每一个子项目一个EditText,但有一个问题: 当我点击的EditText,有时光标正常闪烁, 但有时光标不会出现, 或光标显示但不闪烁。光标的EditText在ExpandableListView的不闪烁或出现

我试过很多方法,但没有人工作。

下面是我试过的方法,但不工作:

  1. 一套用于儿童的每一项的EditText在Java中

    View.OnFocusChangeListener onFocus = new View.OnFocusChangeListener() { 
        @Override 
        public void onFocusChange(View v, boolean hasFocus) { 
         v.dispatchWindowFocusChanged(hasFocus); 
        } 
    }; 
    
  2. 一套用于ExpandableListView

    android:descendantFocusability="afterDescendants" 
    android:focusable="false" 
    
  3. 设置为xml中的子项目

    android:textCursorDrawable="@null" 
        android:cursorVisible="true" 
    

我不知道这个问题的想法,请大家帮忙,非常感谢~~~

+0

是否在子项中添加了android:focusableInTouchMode =“true”和android:focusable =“false”? – Nas

+0

@Nas谢谢〜我只是试过你的代码,它不起作用。 TAT – DawnYu

+0

您是否找到任何解决方案? – Ircover

回答

0

当我发现当某种原因EditText的内心无效计时器停止它的发生。我不知道为什么。

我所能做的就是创建我自己的Handler,以使我的课内视图无效,延伸到EditText

@Override 
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { 
    super.onFocusChanged(focused, direction, previouslyFocusedRect); 
    if(focused) { 
     handler.postDelayed(this, 200); 
    } else { 
     handler.removeCallbacks(this); 
    } 
} 

@Override 
public void run() { 
    invalidate(); 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try { 
       Thread.sleep(250); 
       if(hasFocus()) { 
        handler.post(MyEditText.this); 
       } 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).start(); 
} 

我不认为这是一个好的解决方案。如果你知道的更好,请写下来。