inputType делает элемент не активным - PullRequest
4 голосов
/ 22 ноября 2010

У меня есть ListView, в котором каждый элемент имеет сложную компоновку, которая в какой-то момент содержит TextView с android:inputType="text" и android:ellipsize="marquee".Моя проблема в том, что inputType="text" делает что-то , что делает весь элемент списка неактивным.Я пробовал:

  • android:descendantFocusability="blocksDescendants" на самом верхнем макете элемента,
  • android:focusable="false" на самом TextView,
  • android:focusableInTouchMode="false" на самом TextView,
  • android:clickable="false" на самом TextView,
  • android:editable="false" на самом TextView.

Ничего не сработало.

Причина, по которой я использую android:inputType="text" на TextView, заключается в том, что он становится однострочным, а android:ellipsize="marquee" на самом деле работает.Я сделал свою домашнюю работу:

  • android:singleLine устарел *
  • android:lines="1", как предложено здесь , не работает, текст по-прежнемуобертки, вы просто не видите вторую строку, поэтому эффект выделения не появляется.

* или это так?Мой Ctrl + Пробел в Eclipse говорит об этом примерно android:singleLine (выделение мое):

Ограничивает текст одной горизонтальной прокручиваемой строкой вместо того, чтобы позволить ему переноситься на несколько строк, и перемещает фокус вместо вставкиперевод строки при нажатии клавиши ввода.* устарело : этот атрибут устарел и заменен флагом textMultiLine в атрибуте inputType.Будьте осторожны при изменении существующих макетов, поскольку значение по умолчанию для singeLine равно false (многострочный режим), но если вы укажете какое-либо значение для inputType, по умолчанию будет однострочный режим.(Если оба атрибута singleLine и inputType найдены, флаги inputType будут переопределять значение singleLine.).[логическое значение]

Тем не менее, документы ничего не говорят об устаревании.

Что здесь происходит?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2011

На самом деле в официальная документация R.attr с этой константой атрибута устарела .

Однако (как уже упоминалось) это противоречит документации TextViewстраница .При рассмотрении связанных методов установка атрибута singleLine эквивалентна:

myTextView.setTransformationMethod(new SingleLineTransformationMethod());

, что тоже не рекомендуется.И вот как я танцую вокруг этого обесценивания.

0 голосов
/ 13 января 2011

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

0 голосов
/ 23 ноября 2010

Не уверен, что я полностью понимаю ваши потребности, однако, если я укажу здесь, это код, который я использовал для элемента списка (изображение слева и текст справа, текст ограничен 2 строками и использует функцию многоточия) :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:orientation="horizontal" 
    android:gravity="center_vertical"
    android:padding="5dip">

    <ImageView android:id="@+id/list_item_icon"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:paddingRight="10px" />

    <TextView android:id="@+id/list_item_label"
        android:textSize="16sp" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:ellipsize="marquee" 
        android:maxLines="2"
        android:inputType="textMultiLine" />

</LinearLayout>

Если вам нужен предел в 1 строку, возможно, попробуйте использовать android:maxLines="1"?

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