虽然我知道stackoverflow中有关于这篇文章的帖子仍有数百篇,但我没有找到合适的答案。所以我问这是一个新问题。
问题: - 我在文本视图中有一个文本“你需要吃饼干或香蕉吗?”我希望如果任何人点击香蕉或饼干,那么只有它应该去厨房屏幕。如果点击其他单词则不应该做出反应。
我的尝试: - 我是在文字视图中android:clickable="true"
进行的,但是完整的行可以点击。
因此我决定将其分解为各种文本视图,并使用相对布局,但又有一个问题,即完整的行没有进入屏幕的中心。当我将其硬编码为android:layout_marginLeft="150dp"
但是缩进时干扰了纵向和景观。显然我们不应该对这些值进行硬编码。除了那个给用户一个清晰的视图我需要做一些格式化香蕉和饼干,如粗体和下划线和一些颜色。虽然我使用和标记为粗体和下划线,但如何为文本着色。?
最后我应该总结一下我的问题
1)如何在一个完整的字符串中点击一些单词(不是url链接)
2)如何格式化完整字符串的少量文本。
3)如果使用相对布局,如何将整个字符串保持在中心位置。
如果可以使用任何其他方法,也欢迎使用
请注意,这些都是不是网址链接,而是内部屏幕。 如果有人可以提供帮助的话请。 任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
Hello AddingKnowledge。
您可以做的是在相对布局中定义线性布局,这将为您提供一些灵活性。 除了那个样式可以通过string.xml完成。或者你可以从style.xml做样式,这就是style.xml的原因。
如果您愿意,可以通过How to make a part of text clickable like button in Android?链接获取更深入的知识。或handle textview link click in my android app
答案 1 :(得分:0)
要保持文本居中,请尝试使用android:layout_centerInParent =“true”dnt使用android:layout_marginLeft =“150dp”
和Textview可点击
tv.setText(Html
.fromHtml("<a href='Banana'>Banana</a>"));
tv.setMovementMethod(LinkMovementMethod.getInstance());
// Performing action on TouchListener of ForgotPassword
tvforgotpwd.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Intent Forgotpwdintent = new Intent();
Forgotpwdintent.setClass(getApplicationContext(),
Kicthenscreen.class);
startActivity(Forgotpwdintent);
return true;
}
});
查看此链接可能有用...... http://coderzheaven.com/2011/05/textview-with-link-in-android/
我尝试使用相对布局的Xml文件是..
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/textView1"
android:text="TextView" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/textView2"
android:text="TextView" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@id/textView3"
android:text="TextView" />
</RelativeLayout>
我在这样的java文件中写道..
TextView tv=(TextView)findViewById(R.id.textView3);
tv.setText(Html.fromHtml("<a href='Banana'>Banana</a>"));
tv.setClickable(true);
tv.setMovementMethod(LinkMovementMethod.getInstance());
tv.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "hai", Toast.LENGTH_LONG).show();
return true;
}
});
对我来说布局只对齐到中心..
答案 2 :(得分:0)
Hi User AddingKnowledge,
我非常仔细地阅读了你的问题,如果你准备在不同的文本集中打破句子,那么你可以在TextViews中设置文本,如下所示。你可以查看下面的更多细节xml layout.For TextView text_banana和text_cookies可以设置onclick监听器。
如有任何方便,请告诉我。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="You need " />
<TextView
android:id="@+id/text_cookies"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="cookies" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" or " />
<TextView
android:id="@+id/text_banana"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="banana" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=" to eat?" />
</LinearLayout>
</RelativeLayout>