Android custom ListView with ImageButton is not getting focus

前端 未结 5 995
感动是毒
感动是毒 2020-12-08 22:42

I am developing an app for android TV. I have a listview with an ImageButton + Textviews as children. As TV does not take touch events

相关标签:
5条回答
  • 2020-12-08 22:52

    Have you tried :

    setFocusableInTouchMode(false);
    

    or

    setFocusable(false);
    

    On both your items (ImageButton and TextView) ?

    0 讨论(0)
  • 2020-12-08 22:57

    I had the same problem in listView but I found the solution,simply use imageView instead of image button, then row will be clickable and focusable as well.

    NOTE: when ever we use button or imagebutton in listView the row of the list view gets disable to prevent this from happening use view or imageview instead.

    Hope so this will help you.

    0 讨论(0)
  • 2020-12-08 23:00

    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:

    1. Create one selector file.
    2. Applied on Imagebutton.
    3. Added android:focusableInTouchMode="true" to ImageButton.

    To get focus on Listview:

    1. Add 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.

    0 讨论(0)
  • 2020-12-08 23:08

    I had the same problem before. I solved my problem with adding (to the layout in xml)

    android:focusableInTouchMode="true"
    android:clickable="true"
    

    So my problem was resolved.

    Note: Adding only android:focusableInTouchMode="true" doesn't work, You must have to make the layout clickable true, after focusableInTouchMode true.

    0 讨论(0)
  • 2020-12-08 23:12

    Add below code to the parent layout of custom row,

    android:descendantFocusability="blocksDescendants"
    

    and add below code to any button or ImageButton in that layout

    android:focusable="false"
    android:focusableInTouchMode="false"
    
    0 讨论(0)
提交回复
热议问题