Регулировка фокуса в ListView

голоса
3

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

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

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

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

ТИА.

Задан 21/02/2009 в 04:16
источник пользователем
На других языках...                            


3 ответов

голоса
6

Хотя вы указали в 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 d 05:18
источник пользователем

голоса
2

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

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

android:listSelector="#8fff" делает это так просто на переднем плане изменения по выбору.

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

Ответил 21/02/2009 d 05:13
источник пользователем

голоса
0

Cant вы делаете с RadioButton Thats выбранной, если пользователь прикасается к строке в списке?

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

// 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 d 12:18
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more