Как сделать текст жирным в навигационном ящике после выбора?

Я использую навигационный ящик и хочу реализовать стиль Google, т. Е. Когда элемент выбран, вместо использования индикатора я хочу выделить текст текущего элемента жирным шрифтом, как это происходит в Play Music или NewsStand. Как я могу это сделать?


person vishalmullur    schedule 28.12.2013    source источник


Ответы (1)


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

 public void onItemSelected(AdapterView<?> parent, View view,int position, long id) {
    View rowView = view
    TextView tv = (TextView) rowView.findViewById(R.id.label);
    tv.setTypeface(null, Typeface.BOLD);
    }
});

Надеюсь это поможет !

person Adnan Mulla    schedule 28.12.2013
comment
Это вообще не работает. OnItemSelectedListener на самом деле не прослушивает «выбор» в смысле проверки одного или нескольких элементов в списке ящиков. На самом деле он реагирует только на фокусировку элементов (с помощью трекпада или чего-то подобного). В противном случае его никогда не называют. - person Natix; 10.04.2014
comment
Это было предназначено для трекпада! Вы можете просто написать тот же код в методе OnItemClick и получить тот же результат! - person Adnan Mulla; 10.04.2014
comment
Использование OnItemClickListener имеет проблему — TextView не выделяется жирным шрифтом до тех пор, пока пользователь не нажмет на него. Но вам нужно выделить текущий выбранный элемент жирным шрифтом с самого начала действия. - person Natix; 10.04.2014
comment
Метод setSelection или setItemSelected должен помочь вам сделать это в первый раз, а затем onItemClick справится с этим. - person Adnan Mulla; 10.04.2014
comment
setSelection() только перемещает ListView к данному элементу, но фактически не "выбирает" его (эти методы названы очень запутанным образом). Я не вижу метода setItemSelected(), но есть setItemChecked(). Однако это не приводит к срабатыванию OnItemClickListener, потому что на самом деле он не щелкает. - person Natix; 10.04.2014
comment
Я думал, что это то, чего мы хотели достичь. Не уверен, чего вы пытаетесь достичь. Возможно, открыть новый вопрос SO? Но если вы впервые щелкаете по элементу списка, то вам может помочь функция executeItemClick(). - person Adnan Mulla; 10.04.2014
comment
Я лично решил это с помощью пользовательского адаптера, как в stackoverflow.com/a/21336286/1064809 . Я просто указываю, что ваш ответ не дает правильного решения. - person Natix; 10.04.2014
comment
Просто примечание: этот код сделает все текстовые представления с этим идентификатором жирным шрифтом. Я считаю, что правильное поведение будет получено при выполнении: ((TextView) view).setTypeface(null, Typeface.BOLD); вместо - person Brian F Leighty; 13.11.2014