如何在Android布局文件中定义带下划线的文本xml?
我有一个TextView,它呈现基本HTML,包含2个以上的链接.我需要捕获链接上的点击并打开链接 - 在我自己的内部WebView中(不在默认浏览器中).
处理链接呈现的最常用方法似乎是这样的:
String str_links = "<a href='http://google.com'>Google</a><br /><a href='http://facebook.com'>Facebook</a>";
text_view.setLinksClickable(true);
text_view.setMovementMethod(LinkMovementMethod.getInstance());
text_view.setText( Html.fromHtml( str_links ) );
Run Code Online (Sandbox Code Playgroud)
但是,这会导致链接在默认的内部Web浏览器中打开(显示"使用完整操作..."对话框).
我尝试实现一个onClickListener,当单击链接时正确触发,但我不知道如何确定单击了哪个链接...
text_view.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// what now...?
}
});
Run Code Online (Sandbox Code Playgroud)
或者,我尝试创建自定义LinkMovementMethod类并实现onTouchEvent ...
public boolean onTouchEvent(TextView widget, Spannable text, MotionEvent event) {
String url = text.toString();
// this doesn't work because the text is not necessarily a URL, or even a single link...
// eg, I don't know how to extract the clicked link from the greater paragraph of …Run Code Online (Sandbox Code Playgroud) 我在我的网站上使用了a-htmltag TextView,但是当我点击它时没有任何反应.
如何使用url打开Web浏览器?
我想做什么:包含这样的消息的列表:
<UserName>,这是用户编写的mnessage,它将很好地包装到下一行.完全是这样的.
是)我有的:
ListView R.layout.list_item:
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text_message"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="(Message Text)" />
Run Code Online (Sandbox Code Playgroud)
膨胀以上布局的适配器并执行:
SpannableStringBuilder f = new SpannableStringBuilder(check.getContent());
f.append(username);
f.setSpan(new InternalURLSpan(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Clicked User", Toast.LENGTH_SHORT).show();
}
}), f.length() - username.length(), f.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
f.append(" " + message);
messageTextView.setText(f);
messageTextView.setMovementMethod(LinkMovementMethod.getInstance());
meesageTextView.setFocusable(false);
Run Code Online (Sandbox Code Playgroud)
InternalURLSpan类
public class InternalURLSpan extends ClickableSpan {
OnClickListener mListener;
public InternalURLSpan(OnClickListener listener) {
mListener = listener;
}
@Override
public void onClick(View widget) {
mListener.onClick(widget);
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds); …Run Code Online (Sandbox Code Playgroud) 我有TextView文本,动态更改.这个文本包含像<a href='myWord'>myWord</a>.我希望在点击这个"链接"之后,myWord出现在同一活动的EditText中.
这是我的代码:
txt.setText(Html.fromHtml("...<a href='link'>link</a>..."));
txt.setMovementMethod(LinkMovementMethod.getInstance());
Run Code Online (Sandbox Code Playgroud)
它适用于href属性中的URL,但是另一种格式存在错误.
我在StackOverflow上发现了很多类似的问题,但所有问题都与url链接有关.在我的应用程序中,我想在活动中创建"链接".一般来说,如果依赖,我可以将标签更改为其他标签...
请帮我!谢谢!
-----已解决-----谢谢雅各布菲利普斯的想法!
将来可能会有人感兴趣.这是一个代码:
//This is my string;
String str = "<b>Text</b> which contains one <a href='#'>link</a> and another <a href='#'>link</a>";
//TextView;
TextView txt = new TextView(this);
//Split string to parts:
String[] devFull = data[v.getId()][1].split("<a href='#'>");
//Adding first part:
txt.append(Html.fromHtml(devFull[0]));
//Creating array for parts with links (they amount always will devFull.length-1):
SpannableString[] link = new SpannableString[devFull.length-1];
//local vars:
ClickableSpan[] cs = new ClickableSpan[devFull.length-1];
String linkWord;
String[] devDevFull = new String[2];
for(int …Run Code Online (Sandbox Code Playgroud) 将textView autoLinkMask设置为Linkify.ALL,我可以打开链接,浏览器显示网页.
我需要调用另一个活动来完成它的webView不会离开应用程序.
重要笔记:
我看遍了movementMethod和IntentFilters,可能会错过的东西,但看起来它也没有办法.
那么,任何拦截触摸链接的选项TextView都可以用它来打开浏览器吗?
如果你想提一下这个问题,请提出一些论据,为什么它似乎没有像我一样解决同样的问题.
我有一个TextView,我用HTML填充然后链接它.HTML中的某些链接采用特殊格式,并且是指向项目中其他活动的链接,而不是普通的URL链接.是否可以在TextView中拦截此类链接上的点击并在链接采用特殊格式时执行自定义操作?
谢谢.
我正在Webview使用一些链接创建简单的应用程序textview并打开这些链接webview而不是默认浏览器.我textview包含各种不同的URL,我试图在我的应用程序的webview中打开每个链接.
这里代码:
tv.setText("www.google.com www.facebook.com www.yahoo.com");
tv.setMovementMethod(LinkMovementMethod.getInstance());;
tv.setText(Html.fromHtml(tv.getText().toString()));
Linkify.addLinks(tv, Linkify.WEB_URLS);
WebViewClient yourWebClient = new WebViewClient()
{
// Override page so it's load on my view only
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// This line we let me load only pages inside Firstdroid Webpage
if ( url.contains("www") == true )
// Load new URL Don't override URL Link
return false;
// Return true to override url loading (In this case do …Run Code Online (Sandbox Code Playgroud) 我使用带有链接的TextView:
TextView tv ...
tv.setText( Html.fromHtml(somehtml))
Run Code Online (Sandbox Code Playgroud)
可以通过设置属性android:textColorLink来控制链接颜色,但是我可以删除它的下划线吗?
我想将按钮myButton添加到TextView.如何将它放在一行中,使其看起来像一组线.以下是要添加的文本示例
请在此处按此按钮刷新值集.
我希望将"here"作为可点击按钮.我该怎么做.它上面的任何片段都会有所帮助.