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

Управление фокусом в ListView

Контекст: я хочу, чтобы ListView не получал фокуса (например, не выделял строку, когда пользователь касался ее). Тем не менее, каждый виджет строки имеет свой собственный OnClickListener. Вот что я указываю в layout xml:

android:choiceMode="none" 
android:focusableInTouchMode="false"
android:focusable="false"

ListView по-прежнему ведет себя точно так же. Может кто-нибудь объяснить

  1. Взаимоотношения между тремя
  2. Как правильно создать ListView, который не получает фокус?

ТИА.

21.02.2009

  • Привет Квинтин. У меня такая же проблема. Вы нашли ответ? 25.11.2010
  • два лучших решения 2098558/ 12.01.2015

Ответы:


1

Список, получающий фокус, отличается от выбранной строки, которая не выделяется. Список получает фокус всякий раз, когда пользователь находится в нем. Лучшее, что может сделать ListView, это сообщить int для всего, что выбрал пользователь. Я не уверен, как у каждого виджета строки есть собственный ClickListener. Я не знаю никаких виджетов строк. onListItemClick принадлежит ListView.

Я еще не смог понять это, но я полагаю, что между android:listSelector и android:background и настройкой альфа-каналов будет способ сделать выделение похожим на невыбранную строку.

android:listSelector="#8fff" делает так, что при выборе меняется только передний план.

Кажется, что андроид сам выбирает невыбранный передний план, что усложняет задачу. Надеюсь, это поможет.

21.02.2009
  • На самом деле, когда вы устанавливаете эти атрибуты на @android:color/transparent, нет визуальной индикации того, выбран элемент или нет. 15.10.2012

  • 2

    Хотя вы указали в xml, вы также можете попробовать указать в коде. Хотя я не уверен, что вы можете настроить список так, чтобы он не фокусировался, и при этом список можно было прокручивать, и он был доступен для кликов.

    после вашего setContentView...

    myListView.setFocusableInTouchMode(false);
    

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

        myListView.setOnFocusChangeListener(new OnFocusChangeListener(){
    
            public void onFocusChange(View v, boolean hasFocus)
            {
                v.setBackgroundColor(hasFocus ? Color.GRAY : Color.BLACK);
            }
        });
    
        myListView.setClickable(true);
    
    21.02.2009
  • Я не понимаю, почему, но установка android:focusableInTouchMode="false" в представлении XML не остановит его фокусировку/прокрутку во время выполнения. Работал только вызов listView.setFocusableInTouchMode(false); в коде. Магия! 23.09.2014

  • 3

    Разве вы не можете сделать с RadioButton, который выбирается, когда пользователь касается строки в списке?

    Ниже приведен отрывок из моего собственного кода.

    // Create an adapter with a simple list item with single choice.
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, categories);
    
    // Set the adapter to your list
    listView.setAdapter(adapter);
    

    Ваше здоровье!

    09.08.2012
    Новые материалы

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

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

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

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

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

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

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