gpt4 book ai didi

android - 使部分 TextView 可点击(不是 url)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:22 26 4
gpt4 key购买 nike

我已经挣扎了一段时间了。在需要文本的 Activity 上:单击注册,即表示我同意服务条款和隐私政策。“服务条款”和“隐私政策”部分需要可点击。我找到的解决方案制作了 url。但我不需要 url 来浏览条款,需要启动条款 Activity 或隐私 Activity 。

然后我发现了这个: https://stackoverflow.com/a/9076448/1387161但这里的问题是,它们并没有很好地对齐。我的意思是:如果有小分辨率的手机,我需要在textview2 旁边设置textview1,在textview1 下设置textview3,旁边是textview4。但是当我在平板电脑或屏幕更大的手机上使用该应用程序时,也许所有的 TextView 都可以彼此相邻,但布局与屏幕较小的手机相同 =

TextView 1 - TextView 2Textview3 - Textview4

一个可能的解决方案是流式布局,但我遇到了错误并且似乎找不到好的教程(适合初学者) How to use flowlayout (or any custom layout)

欢迎任何想法!

谢谢,

比约恩

最佳答案

public class MainActivity extends Activity {
TextView _tv;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_tv = (TextView) findViewById( R.id.textView1 );
String sentence = "this is [part 1 clickable] and [part 2 clickable] and [part 3 clickable]";


_tv.setMovementMethod(LinkMovementMethod.getInstance());
_tv.setText(addClickablePart(sentence), BufferType.SPANNABLE);
}
private SpannableStringBuilder addClickablePart(String str) {
SpannableStringBuilder ssb = new SpannableStringBuilder(str);

int idx1 = str.indexOf("[");
int idx2 = 0;
while (idx1 != -1) {
idx2 = str.indexOf("]", idx1) + 1;

final String clickString = str.substring(idx1, idx2);
ssb.setSpan(new ClickableSpan() {

@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, clickString,
Toast.LENGTH_SHORT).show();
}
}, idx1, idx2, 0);
idx1 = str.indexOf("[", idx2);
}

return ssb;
}
}

编辑

public class MainActivity extends Activity {
TextView _tv;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_tv = (TextView) findViewById( R.id.textView1 );

SpannableString ss = new SpannableString("Android is a Software stack");

ss.setSpan(new MyClickableSpan(), 22, 27, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//22 to 27 stack is clickable
ss.setSpan(new MyClickableSpan(), 0, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//0 to 7 Android is clickable

_tv.setText(ss);
_tv.setMovementMethod(LinkMovementMethod.getInstance());
}
class MyClickableSpan extends ClickableSpan{ //clickable span
public void onClick(View textView) {
//do something
Toast.makeText(MainActivity.this, "Clicked",
Toast.LENGTH_SHORT).show();
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setColor(Color.GREEN);//set text color
ds.setUnderlineText(false); // set to false to remove underline
}
}
}

有关 ClickableSpan 的更多信息 http://developer.android.com/reference/android/text/style/ClickableSpan.html

您还可以通过将其设置为粗体、斜体或设置字体大小来设置可跨越字符串的样式。

    StyleSpan boldSpan = new StyleSpan( Typeface.ITALIC );
ss.setSpan( boldSpan, 22, 27, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );
StyleSpan boldSpan1 = new StyleSpan(Typeface.BOLD);
ss.setSpan(new RelativeSizeSpan(3f), 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);//set fontsize
ss.setSpan( boldSpan1, 0, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE );

关于android - 使部分 TextView 可点击(不是 url),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com