Android 文本视图上的linkify与文本中的域不工作,链接不可单击
当字符串显示带有Android 文本视图上的linkify与文本中的域不工作,链接不可单击,android,linkify,Android,Linkify,当字符串显示带有href的域名时,我无法链接带有href的字符串。那就用绳子吧。让我给你看看 以下是字符串: <string name="go_to_settings">Please go to "Settings" in <a href="https://www.mywebsite.com/settings">mywebsite.com</a> to change this status</string> 下面是我如何使链接可点击的: Lin
href
的域名时,我无法链接带有href
的字符串。那就用绳子吧。让我给你看看
以下是字符串:
<string name="go_to_settings">Please go to "Settings" in <a href="https://www.mywebsite.com/settings">mywebsite.com</a> to change this status</string>
下面是我如何使链接可点击的:
Linkify.addLinks(tv_instructions, Linkify.ALL)
tv_instructions.movementMethod=LinkMovementMethod.getInstance()
但我看到在api 24和27设备上发生的事情,emulator是链接到www.mywebsite.com而不是www.mywebsite/settings
但奇怪的是,如果我更改用户看到的文本并从中删除.com,那么它就可以正常工作。因此,如果用户看到这一点,它就会起作用:
它会对用户说:“请转到mywebsite中的“设置”以更改此状态。”
请注意,没有提到.com。我怎样才能把它显示出来。我也试过这样做:
tv_instructions.text=(utils.fromHTML(resources.getString(R.string.go_to_settings),null))
tv_instructions.movementMethod=LinkMovementMethod.getInstance()
文本视图如下所示:
<TextView
android:id="@+id/tv_instructions"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:layout_marginTop="73dp"
android:lineSpacingExtra="3sp"
android:textAlignment="center"
android:textColor="#5c5c5c"
android:text="@string/go_to_settings"
/>
<TextView
android:id="@+id/tv_instructions"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:layout_marginTop="73dp"
android:lineSpacingExtra="3sp"
android:text="@string/go_to_settings"
android:textAlignment="center"
android:textColor="#5c5c5c"
android:textColorLink="@color/action_blue"/>
你们知道我做错了什么吗
文本视图上的linkify与文本中的域不工作,链接不可单击
你也可以使用
如果使用LinkMovementMethod
的移动方法将此类型的对象附加到TextView
的文本,则可以选择受影响的文本范围。如果选中并单击,将调用onClick(View)
方法
检查下面的示例代码
试试这个
public class MainActivity extends AppCompatActivity {
TextView myTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTextView = (TextView) findViewById(R.id.myTextview);
setSpan();
}
private void setSpan() {
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder("Please go to \"Settings\" in");
SpannableString spannableString = new SpannableString(" mywebsite.com ");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Toast.makeText(MainActivity.this, "Click", Toast.LENGTH_SHORT).show();
// you can open your link here as per your requiremnt
}
};
spannableString.setSpan(clickableSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new UnderlineSpan(), 0, spannableString.length(), 0);
spannableStringBuilder.append(spannableString);
spannableStringBuilder.append("to change this status");
myTextView.setText(spannableStringBuilder);
myTextView.setMovementMethod(LinkMovementMethod.getInstance());
}
}
文本视图上的linkify与文本中的域不工作,链接不可单击
你也可以使用
如果使用LinkMovementMethod
的移动方法将此类型的对象附加到TextView
的文本,则可以选择受影响的文本范围。如果选中并单击,将调用onClick(View)
方法
检查下面的示例代码
试试这个
public class MainActivity extends AppCompatActivity {
TextView myTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTextView = (TextView) findViewById(R.id.myTextview);
setSpan();
}
private void setSpan() {
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder("Please go to \"Settings\" in");
SpannableString spannableString = new SpannableString(" mywebsite.com ");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
Toast.makeText(MainActivity.this, "Click", Toast.LENGTH_SHORT).show();
// you can open your link here as per your requiremnt
}
};
spannableString.setSpan(clickableSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannableString.setSpan(new UnderlineSpan(), 0, spannableString.length(), 0);
spannableStringBuilder.append(spannableString);
spannableStringBuilder.append("to change this status");
myTextView.setText(spannableStringBuilder);
myTextView.setMovementMethod(LinkMovementMethod.getInstance());
}
}
我明白了。出于某种原因,我需要在我的字符串文件中使用标记cData
将文本包装为字符数据。这项工作:
<string name="go_to_settings"><![CDATA[Please go to "Settings" in <a href="https://www.mywebsite.com/settings">mywebsite.com</a> to change this status :]]></string>
Java代码
tv_instructions.text=(utils.fromHTML(resources.getString(R.string.go_to_settings),null))
tv_instructions.movementMethod=LinkMovementMethod.getInstance()
我明白了。出于某种原因,我需要在我的字符串文件中使用标记cData
将文本包装为字符数据。这项工作:
<string name="go_to_settings"><![CDATA[Please go to "Settings" in <a href="https://www.mywebsite.com/settings">mywebsite.com</a> to change this status :]]></string>
Java代码
tv_instructions.text=(utils.fromHTML(resources.getString(R.string.go_to_settings),null))
tv_instructions.movementMethod=LinkMovementMethod.getInstance()
测试用例android:autoLink=“web”
我在代码中删除了linkify all中的调用,并按照您在xml中所说的做了。相同的结果您是否在浏览器中打开了链接浏览器中的链接打开良好。测试用例android:autoLink=“web”
我在代码中删除了linkify all中的调用,并按照您在xml中所说的做了。同样的结果你在浏览器中打开链接了吗链接在浏览器中打开得很好。这也是一个很好的方法,但我不想写代码,+1这也是一个很好的方法,但我不想写代码,+1