【问题标题】:Android - Selectable TextView inside a listviewAndroid - 列表视图中的可选 TextView
【发布时间】:2013-05-06 02:57:36
【问题描述】:

在我的 Sony Xperia 上尝试将 TextView 的内容复制到列表视图中时遇到问题。

这是我的列表视图:

<ListView
    android:id="@+id/list_1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:cacheColorHint="@android:color/transparent"
    android:divider="#00000000"
    android:listSelector="@android:color/transparent"/>

这是我的列表项:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
    android:layout_width="match_parent"
    android:id="@+id/editText1" android:layout_height="wrap_content" />

</LinearLayout>

还有我的代码:

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     ListView list = (ListView) findViewById(R.id.list_1);
     ArrayList<String> data = new ArrayList<String>();
     data.add("AAAAAAAAA");
     data.add("BBBBBBBBBB");
     data.add("CCCCCCCC");
     data.add("DDDDDDDDD");
     list.setAdapter(new MyAdapter(data));
}

这是我的适配器:

private class MyAdapter extends BaseAdapter{
    private ArrayList<String> mData;
    public MyAdapter (ArrayList<String> data){
        super();
        mData = data;
    }
    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        return mData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null) {
            convertView = getLayoutInflater().inflate(
                    R.layout.list_item, parent, false);
        }
        String str = mData.get(position);
        TextView tv = (TextView) convertView.findViewById(R.id.editText1);
        tv.setText(str);
        tv.setTextIsSelectable(true);
        return convertView;
    }
}

我在一些线程上发现 setTextIsSelectable(true) 将允许在 TextView 上复制文本,但如果 TextView 在列表视图中,它看起来不起作用。

你们能帮我解决一下吗?

【问题讨论】:

  • 更手动的实现可能会有所帮助?只需在 textview 上设置一个 onclicklistener 并通过剪贴板管理器将文本复制到剪贴板。当然,您需要将该文本视图的可点击设置为 true
  • 感谢 Chor,但我不想复制所有文本,只是像本机复制/粘贴一样复制其中的一部分

标签: android


【解决方案1】:

你有没有试过把这个放在你的 TextView 组件上:android:textIsSelectable="true"?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
    android:layout_width="match_parent"
    android:id="@+id/editText1" android:layout_height="wrap_content"
android:textIsSelectable="true"
 />

</LinearLayout>

【讨论】:

  • 尝试将代码放在xml而不是java代码中并告诉发生了什么。我测试过,一切正常
  • 您在 Sony Xperia 上进行过测试吗?我注意到这个问题只发生在索尼 Xperia 上,您的代码在三星 Galaxy S3、HTC OneX 等其他设备上运行良好
猜你喜欢
  • 1970-01-01
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
  • 2012-07-24
  • 2013-05-30
  • 1970-01-01
  • 2012-01-13
相关资源
最近更新 更多