如何在Android Studio中实现PopupWindow弹窗内超链接可点击?
问题根因
- 你配置
android:autoLink属性的位置错误:该属性加在了activity_main.xml的控件上,但弹窗承载内容的TextView属于独立布局R.layout.content_popup,属性不会跨布局生效。 - 仅配置xml属性不足以让超链接响应点击,还需要给TextView配套设置链接触摸处理类。
修复步骤
- 修改
content_popup.xml中对应R.id.contentView的TextView配置,新增如下属性:
<TextView android:id="@+id/contentView" <!-- 原有其他属性保持不变 --> android:autoLink="all" android:linksClickable="true" />
- 在弹窗初始化的代码中,给TextView设置
LinkMovementMethod,修改后的点击事件代码如下:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { BlackBoardEntry entry = (BlackBoardEntry) parent.getItemAtPosition(position); String content = entry.getContent(); LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View popupView = inflater.inflate(R.layout.content_popup, null, false); TextView contentTv = popupView.findViewById(R.id.contentView); contentTv.setText(content); // 新增下面这行代码,用于响应超链接点击事件 contentTv.setMovementMethod(LinkMovementMethod.getInstance()); PopupWindow popup = new PopupWindow(popupView, 500, 1000, true); popup.showAtLocation(parent, Gravity.CENTER, 0, 0); }
修改完成后重新运行即可正常点击弹窗内的超链接。
内容的提问来源于stack exchange,提问作者Irina
相关产品推荐
相关产品推荐

