作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在 textview 段落的末尾放置一个按钮,例如“Go”按钮,当用户单击它时,应用程序将转到另一个页面。
例如:
if you have good endurance,
for killing the monster you must
going to section 2. [Go->]
-if you haven't good endurance,
flee to section 3. [Go->]
在上面的示例中,[Go->]
是一个必须精确放置在行尾的小按钮。
如何在运行时完成?
最佳答案
您可以为此使用跨度。
假设您有一个名为 myText
的 TextView
。
Drawable goButtonDrawable = getResources().getDrawable(R.drawable.go_button);
String text = "If you have good endurance, for killing the monster you must go to section 2. [GO]"
String replace = "[GO]";
final int index = text.indexOf(replace);
final int endIndex = index + replace.length();
final ImageSpan imageSpan = new ImageSpan(goButtonDrawable, ImageSpan.ALIGN_BASELINE);
final ClickableSpan clickSpan = new ClickableSpan() {
@Override public void onClick(View clicked) {
// Do your [GO] action
}
};
SpannableString spannedText = new SpannableString(text);
spannedText.setSpan(imageSpan, index, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannedText.setSpan(clickSpan, index, endIndex , Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
myText.setText(spannedText);
显然,这可以更好地抽象化(您可以制作一个自定义的 TextView 在内部处理它),但这是一般的想法。
关于Android:如何放置带有多行文本的 TextView 的按钮端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23280391/
我是一名优秀的程序员,十分优秀!