как сделать слово в полном текстовом виде кликабельным андроидом (не URL-ссылкой) - PullRequest
3 голосов
/ 29 февраля 2012

Хотя я знаю, что в stackoverflow есть сотни постов относительно этого поста, я не нашел свой подходящий ответ. Поэтому я задаю это как новый вопрос.

Проблема : - У меня есть текстовое представление " Вам нужны печенье или банан, чтобы поесть ?" Я хочу, чтобы, если кто-нибудь нажмет на банан или печенье, то только он должен перейти на экран «Кухня». Если нажать на другое слово, оно не должно реагировать.

Моя попытка : - Я делаю это из текстового представления, android:clickable="true", но вся строка становится кликабельной. Поэтому я решил разбить его на различные текстовые представления и использовал относительное расположение, но опять-таки возникла проблема, заключающаяся в том, что полная линия не появлялась в центре экрана. Когда я жестко закодировал ее как android:layout_marginLeft="150dp", но отступы мешают портрету и ландшафту. и, очевидно, мы не должны жестко кодировать значения. Помимо этого, чтобы дать пользователю четкое представление, мне нужно сделать некоторые форматы банана и печенья, как жирный и подчеркнутый и немного цвета. Хотя я использовал и тег для жирного и подчеркивания, как раскрасить текст .?

Наконец, я должен изложить свои проблемы как

1) Как сделать какое-либо слово в целой строке кликабельным (не URL-ссылки)

2) Как выполнить форматирование нескольких текстов полной строки.

3) Если используется относительное расположение, как сохранить всю строку в центре.

Если можно использовать любой другой подход, они также приветствуются

Обратите внимание, что все это не ссылки , а внутренние экраны. Поэтому, пожалуйста, если кто-нибудь может помочь. Любая помощь будет оценена. Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 29 февраля 2012

Здравствуйте, AddingKnowledge.

Что вы можете сделать, это определить линейный макет внутри относительного макета, что обеспечит некоторую гибкость.Помимо этого стиля можно сделать через string.xml.Или вы можете сделать стилизацию из style.xml, и поэтому style.xml там есть.

Если вы хотите, вы можете перейти по ссылке как Как сделать часть текста кликабельной как кнопка в Android? для более глубокого знания.Или обрабатывать ссылку на просмотр текста в моем приложении для Android

0 голосов
/ 29 февраля 2012

Здравствуйте, пользователь, добавляющий знание,

Я очень внимательно прочитал вашу проблему. Если вы готовы разбить предложение на другой набор текстов, вы можете установить тексты в TextViews, как я сделал ниже.проверьте ниже более подробную информацию о макете XML. Для 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>
0 голосов
/ 29 февраля 2012

Чтобы сохранить текст в центре, попробуйте с помощью android: layout_centerInParent = "true" не используйте android: layout_marginLeft = "150dp"

и для просмотра текста Чтобы быть кликабельным

                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;
        }
    });

для меня макет выровнен только по центру ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...