【问题标题】:Have textview contain links inside a listview让 textview 在列表视图中包含链接
【发布时间】:2013-07-09 23:46:25
【问题描述】:

我在捕捉链接点击时遇到问题。

您可以使用以下方式显示链接:

<ListView
    android:id="@+id/newsListview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:linksClickable="true"
    android:autoLink="all"        
    >
</ListView>

// **s** contains mixed text with multiple links in    
textview.setText(Html.fromHtml(s)); 

但是,在 textview 内部点击,事件被捕获

  OnItemClickListener eventClickListener = new OnItemClickListener()  
  {                                
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
    {                           
      MyListItemExt data = myItemsDataArrayList.get(position);              
      //...
      Intent paramIntent = new Intent(thisActivityContext, Browser.class);
      //...
    }
  }
  newsListView.setOnItemClickListener(eventClickListener);

有人建议使用

textview.setMovementMethod(LinkMovementMethod.getInstance());

但是 1) 它似乎禁用了所有链接和 2) 我不明白阅读文档为什么这会有所帮助

现在,我看到了一些关于使用意图过滤器的建议(以避免外部浏览器打开),但只要点击被列表视图捕获,我认为它不会有任何区别,因为链接点击是据我所知,根本没有抓到。

【问题讨论】:

标签: android listview textview


【解决方案1】:

在 textview 的 XML 中,添加行

android:autoLink="web"
android:textIsSelectable="false"

然后,对于整个视图(包含您的行的线性或相对布局),在getView() 中添加一个onClickListener。这并不优雅,但这是我以前必须这样做的方式。

【讨论】:

  • 没有解决所描述的问题?显示链接没有问题(实际上我已经在做你描述的事情,只是使用“all”而不是“web”作为值,但我都尝试过),这是链接的实际打开不起作用(对我来说)当(我猜)文本视图被放置在捕获点击的列表视图上时
  • 很抱歉,没有阅读整个问题(我对此感到非常愚蠢)。发布了更好的答案。
  • 我在 listview 上有 setOnItemClickListener 我想你建议在 textview 上添加 setOnClickListener > (即列表视图中的每个项目都有一个文本视图)?但是如何识别文本中的哪个链接被点击了呢?
  • 不,就像我在答案中所说的,在布局视图上。每行都是从某个布局膨胀而来的,其根是*Layout 视图,例如LinearLayout。这就是你设置的onClickListener
  • 好的,我现在明白了。但是,我仍然有点困惑这将如何让我抓住并响应点击,例如TextView 内文本中的 3 个链接中的第 2 个(混合文本)?
猜你喜欢
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多