Nano Hash - криптовалюты, майнинг, программирование

Кнопка не получает фокус в ListView на Android

У меня есть список с кнопкой и текстом в виде элементов строки. Я хочу, чтобы при прокрутке только кнопка была в фокусе, а не весь список. Но всегда весь список имеет фокус, а не кнопка. Кроме того, если кнопка имеет фокус, будет ли вызываться метод listview onItemSelected?

Список в main.xml

<ListView
        android:id="@+id/episodes_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:choiceMode="singleChoice"
        android:clickable="true" />

Дочерние элементы добавлены в row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"    
android:descendantFocusability="afterDescendants" >

<TextView
    android:id="@+id/name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:ellipsize="end"
    android:focusable="true"
    android:gravity="left|center"
    android:singleLine="true"
    android:textColor="#000000"
    android:textStyle="bold" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:background="@drawable/selector_btn_popup_play"
    android:gravity="center"
    android:text="@string/play"
    android:textColor="@drawable/selector_btn_text_color_light" />

    </LinearLayout>
14.08.2014

Ответы:


1

Установите элемент ListView, недоступный для клика, в адаптере, используя эту строку в методе getView: rowView = inflater.inflate(R.layout.menu_item, null); rowView.setOnClickListener(null);

14.08.2014

2

Попробуйте сделать ListView недоступным для кликов

<ListView
    android:id="@+id/episodes_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    android:choiceMode="singleChoice"
    android:clickable="false" />

И добавьте тег yourButton.setTag() к кнопке в методе getView() вашего ListView, чтобы ссылаться на текущую ячейку, и добавьте OnClickListener к кнопке. В элементе дескриптора onClick() нажмите, получив тег от кнопки.

ИЗМЕНИТЬ

Если просмотр списка по-прежнему доступен, проверьте принятый ответ здесь

14.08.2014
  • Пробовали, но все равно такое же поведение. Даже установил focusable=false, но не работает. 14.08.2014
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..