Как сделать текст в TextView не кликабельным в макете XML? - PullRequest
3 голосов
/ 27 ноября 2011

У меня есть разные строки таблицы, каждая из которых содержит некоторый информационный текст, который не должен быть кликабельным и не выбираемым. Но когда я запускаю это в эмуляторе, текст всегда кликабелен.

Это означает, что когда я нажимаю на любой текстовый блок, его цвет меняется на темно-серый. Я не хочу, чтобы это изменилось. Я хочу, чтобы это ничего не делало.

Конечно, я мог бы установить темно-серый цвет текста, чтобы пользователь не видел, что он что-то щелкает, но это не то, что я хочу.

Я уже пробовал разные атрибуты, как вы можете видеть в примере, но ничто не помогает. Кроме того, что мне на самом деле нужно установить не активируемым, TableRow или TextView внутри TableRow?

Вот пример:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical|center_horizontal"
    >
    <ScrollView 
            android:id="@+id/scrollView"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal">
    <TableLayout 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:stretchColumns="*"
            android:clickable="false">
        <TableRow
            android:layout_width="fill_parent"
            android:background="#777777"
            android:clickable="false">
            <TextView 
                 android:id="@+id/heading"
                 android:text="This is the cool heading"             
                 android:textColor="#FFFFFF"
                 android:layout_width="fill_parent"
                 android:textSize="14sp"
                 android:paddingLeft="5sp"
                 android:paddingRight="5sp"
                 android:paddingTop="2sp"
                 android:paddingBottom="2sp"
                 android:textStyle="bold" 
                 android:clickable="false"  
                 />
        </TableRow>
         <TableRow
             android:clickable="false"
             android:linksClickable="false"
             android:focusable="false"
             android:focusableInTouchMode="false">
            <TextView
                 android:text="This is example text. It should not be clickable, but it is."
                 android:textSize="14sp"
                 android:paddingLeft="5sp"
                 android:paddingRight="5sp"
                 android:paddingTop="2sp"
                 android:paddingBottom="2sp"
                 android:scrollHorizontally="false"
                 android:inputType="textMultiLine"
                 android:linksClickable="false"
                 android:clickable="false"
                 android:focusable="false"
                 android:focusableInTouchMode="false"
                 android:layout_width="0sp"
                 />
               </TableRow>
              </TableLayout>
              </ScrollView>
              </RelativeLayout>

Ответы [ 2 ]

15 голосов
/ 27 ноября 2011

Я нашел решение, когда я добавляю android:longClickable="false" в TextView, оно работает. И мне нужны только эти две настройки в TextView:

android:longClickable="false"
android:clickable="false"

Настройки в TableRow не нужны.

2 голосов
/ 27 ноября 2011

Вы должны поставить следующие атрибуты:

         android:clickable="false"
         android:linksClickable="false"
         android:focusable="false"
         android:focusableInTouchMode="false"

В вашем элементе textview также. Сейчас вы просто отключаете строку, а не отдельные элементы в строке.

...