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

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开销是相同的。 同时,如果它拉出一个元组,从元组中剥离请求的列可能会占用内存。 因此,在

  • 我想显示日期选择器弹出窗口。我找到了一些例子,但我没有正确理解。我有一个编辑文本,我点击编辑文本,会弹出日期选择器对话框,设置日期后,日期会以dd/mm/yyyy格式以片段形式显示在编辑文本中。请提供我的样本代码或良好的链接。

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

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