我试图在片段的textview中创建可点击的链接。我认为模拟器将我的字符串视为链接,但是我无法使其可点击。有什么建议?
在xml中
<TextView
android:id="@+id/textViewLink"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="all"
android:clickable="true"
android:linksClickable="true"
android:text="@string/link_to_the_website"
android:textColor="#329da8"
android:textSize="17sp" />
片段中
linkText.setMovementMethod(LinkMovementMethod.getInstance());
linkText.setText(Html.fromHtml("<a href=\"C:\\Users\\andra\\Documents\\AndroidStudioProjects\\ResurseAndroid\\index.html\"> Read more here</a>"));
linkText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linkText = v.findViewById(R.id.textViewLink);
linkText.setMovementMethod(LinkMovementMethod.getInstance());
linkText.setText(Html.fromHtml("<a href=\"C:\\Users\\andra\\Documents\\AndroidStudioProjects\\ResurseAndroid\\index.html\"> Read more here</a>"));
}
});
在 strings.xml
<string name="link_to_the_website">
<a href="C:\Users\andra\Documents\AndroidStudioProjects\ResurseAndroid\index.html"> Read more here</a>
</string>
只需删除android:autoLink="all"
,它应该可以工作。使用时setMovementMethod
,android:autoLink
不需要,因为它将覆盖setMovementMethod
。
另外,我不确定为什么要TextView
以3种不同的方式设置s链接,请删除:
@string
的XMLonClick
首先,我认为onClick
不需要,然后选择一个选项,或者通过
android:text="@string/link_to_the_website"
要么
linkText.setText(Html.fromHtml("<a href=\"C:\\Users\\andra\\Documents\\AndroidStudioProjects\\ResurseAndroid\\index.html\"> Read more here</a>"));
而不是两者兼而有之。
如果您使用程序化方法,fromHtml
则不赞成使用所使用的方法,而应使用fromHtml(String source, int flags)
如下方法:
linkText.setText(Html.fromHtml("<a href=https://google.com> Read more here</a>", Html.FROM_HTML_MODE_LEGACY));
注意额外的参数 Html.FROM_HTML_MODE_LEGACY
如果您定位的设备不是Android Nougat(API级别24)以下的设备,则可以这样:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
linkText.setText(Html.fromHtml("<a href=https://google.com> Read more here</a>", Html.FROM_HTML_MODE_LEGACY));
} else {
linkText.setText(Html.fromHtml("<a href=https://google.com> Read more here</a>"));
}
最后,我不确定在您的C潜水中链接到硬编码路径是否可行,我使用实际的网站对上述内容进行了测试,即:
linkText.setText(Html.fromHtml("<a href=https://google.com> Read more here</a>", Html.FROM_HTML_MODE_LEGACY));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句