I am developing an app for android TV. I have a listview
with an ImageButton
+ Textview
s as children. As TV does not take touch events but uses D-PAD or trackball remote I have to get focus on all clickable items so that user knows where the focus is. But the problem is I can get focus on list row if I add
android:descendantFocusability="blocksDescendants"
in the custom list row layout but ImageButton
in the list row will not get focus.
And if I remove above code then ImageButton
gets focus but I can't click list row.
Also I added setItemsCanFocus
for my ListView
but no luck, nothing changed.
I read many documents but i could not find a proper answer for this problem. I want focus on both List row as well as ImageButton
. Is it possible, if any one knows please help me...
I have to get focus on all clickable items so that user knows where the focus is. But the problem is I can get focus on list row if I add
View getting hang up due to multiple views inside row file, to get click You have to add one more property to your main layout of row xml.
android:descendantFocusability="blocksDescendants
But when I write above property then I'm not able to focus ImageButton which is in my row file.
I just tried one way to acheive to get foucus on ImageButton
as well as on listview
.
To get focus on ImageButton:
android:focusableInTouchMode="true"
to ImageButton.To get focus on Listview:
android:descendantFocusability="blocksDescendants
to main-layout within row xml.Now when you click on your ImageButton it will focus with your desire color even it will focus on listview click too.
Selecotor.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:state_pressed="true"
android:drawable="@android:color/transparent"
/> <!-- pressed -->
<item
android:state_focused="true"
android:drawable="@android:color/darker_gray"
/> <!-- focused -->
<item
android:drawable="@android:drawable/btn_star"
/> <!-- default -->
</selector>
Tested in S3 emulator, works well.