如何在一个完整的文本视图中制作一个可点击的android(不是url链接)

时间:2012-02-29 07:16:26

标签: android textview

虽然我知道stackoverflow中有关于这篇文章的帖子仍有数百篇,但我没有找到合适的答案。所以我问这是一个新问题。

问题: - 我在文本视图中有一个文本“你需要吃饼干或香蕉吗?”我希望如果任何人点击香蕉或饼干,那么只有它应该去厨房屏幕。如果点击其他单词则不应该做出反应。

我的尝试: - 我是在文字视图中android:clickable="true"进行的,但是完整的行可以点击。 因此我决定将其分解为各种文本视图,并使用相对布局,但又有一个问题,即完整的行没有进入屏幕的中心。当我将其硬编码为android:layout_marginLeft="150dp"但是缩进时干扰了纵向和景观。显然我们不应该对这些值进行硬编码。除了那个给用户一个清晰的视图我需要做一些格式化香蕉和饼干,如粗体和下划线和一些颜色。虽然我使用和标记为粗体和下划线,但如何为文本着色。?

最后我应该总结一下我的问题

1)如何在一个完整的字符串中点击一些单词(不是url链接)

2)如何格式化完整字符串的少量文本。

3)如果使用相对布局,如何将整个字符串保持在中心位置。

如果可以使用任何其他方法,也欢迎使用

请注意,这些都是不是网址链接,而是内部屏幕。 如果有人可以提供帮助的话请。 任何帮助将不胜感激。提前谢谢。

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>