当前位置: 首页 > 知识库问答 >
问题:

EditText选择锚

上官鸿晖
2023-03-14

我有一个listview,其中每一行都是EditText,带有一些文本。当我点击一行时,EditText将获得焦点,显示闪烁的光标和选择锚(您知道蓝色/灰色的手柄,您可以拖动这些手柄来选择一个文本范围)。

问题是,当我从一行移动到另一行(edittext到另一行)时,如果不输入新文本,上一个edittext中的选择锚将会在一段时间内保持可见。如果edittext没有焦点,我想立即隐藏这个锚。

有什么想法吗?

        editText.setOnFocusChangeListener(new OnFocusChangeListener() {             
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus) {

                } else {
                    editText.clearFocus();
                    //editText.clearComposingText();                        
                }
            }
        });

共有1个答案

危彬彬
2023-03-14

我终于拿到了!首先,我从ListView中删除了可聚焦性。然后,我编写了一个自定义的onFocusChangeListener,它从失去焦点的视图中移除选定内容。这个侦听器由自定义适配器应用于视图(我包装了ArrayAdapter,但您也可以包装SimpleCursorAdapter)。

附上一个演示(在Eclair的模拟器上测试):

public class ListOfEditViews extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ListView list = new ListView(this);
        list.setAdapter(getAdapter());
        list.setFocusable(false);
        list.setFocusableInTouchMode(false);

        setContentView(list);
    }

    private ListAdapter getAdapter() {
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.edit_text, R.id.text) {

            @Override
            public View getView (int position, View convertView, ViewGroup parent) {
                View view = super.getView(position, convertView, parent);
                view.setFocusable(true);
                view.setFocusableInTouchMode(true);
                view.setOnFocusChangeListener(listener);
                return view;
            }
        };

        String words = "Lorem ipsum dolor sit amen";

        for (String word: words.split(" "))
            adapter.add(word);

        return adapter;
    }

    private OnFocusChangeListener listener = new OnFocusChangeListener() {

        public void onFocusChange(View view, boolean hasFocus) {
            view.dispatchWindowFocusChanged(hasFocus);
        }
    };
}
 类似资料:
  • 在某些设备中,当我尝试从edittext中选择文本以复制它时,会导致 算术异常 此方法中的异常原因 Android.Widget.Editor.UpdateShowAsAction(Editor.java:6034) 这里是我的edittext的xml代码

  • 在一个应用程序屏幕上,我有许多EditText视图。我的应用程序是使用材料设计(AppCompactActivity等)构建的。 当显示一个EditText字段时,长按我会尝试选择文本中的一些单词。这允许我复制或共享该文本。选择一个以上的单词似乎是不可能的。 自从迁移到材质设计之后,我看到了两件事: 是的,我使用'android:textisselectable=“true”‘。您可以在下面看到E

  • 问题内容: 如果我只需要2/3列,而是查询而不是在select查询中提供这些列,那么关于更多/更少I / O或内存的性能是否会有所下降? 如果我确实选择了*,则可能会出现网络开销。 但是在选择操作中,数据库引擎是否总是从磁盘中提取原子元组,还是仅提取在选择操作中请求的那些列? 如果它总是拉一个元组,则I / O开销是相同的。 同时,如果它拉出一个元组,从元组中剥离请求的列可能会占用内存。 因此,在

  • 我在xaml中创建了一个树景。 树结构如下图所示。每个家长可以有任意数量的孩子 我有所有级别的复选框。我不知道如何单独访问它的节点,也不知道如何使用树数据。 在我的VM类中,我将TreeView的datacontext设置为3类列表,如下所示: 我的要求是: 选择父项应选择其所有子项和孙子项 如何在代码中标识所选的项目?需要它做进一步的处理 请帮忙。

  • 一个选择就是从当前文档中抽取的一组元素。D3使用[[CSS3|http://www.w3.org/TR/css3-selectors/]]来选择页面元素。例如,你可以使用的选择方式有标签 ("div")、类(“.awesome”)、唯一标识符(“#foo”)、属性(“[color=red]”)、或者包含(“parent child”)。选择器可以是交叉(".this.that" 表示逻辑与)的也可

  • Action is similar to “Go to Edit Point”, but selects important code parts. 这个功能类似于编辑点间移动功能,但是选择重要的代码部分。 In HTML, these are tag name, full attribute and attribute value. For class attribute it also sel