Android: Selector isn't working as expected in TableRow selection

老子叫甜甜 提交于 2019-12-13 05:36:32

问题


I have a TAbleLayout in my XML with 1 row i.e. te headings row. Other all rows, I add dynamically. I want to make a row selected on clicking it & on touching it. I added clickListener to each row and am able to trap click event. But when the mouse is pressed or kept pressed, I see color change, then again it comes to normal color. I want the color to stay changed until I click other row or click somewhere else to deactivate the selected row.

My selector XML code :

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<!--  Active state -->  
<item android:state_selected="true" android:state_focused="false"
      android:state_pressed="false" android:drawable="@android:color/transparent" />      
<!--  Inactive state-->  
<item android:state_selected="false" android:state_focused="false"
      android:state_pressed="false" android:drawable="@android:color/transparent" /> 
 <!--  Pressed state --> 
 <item android:state_pressed="true" android:drawable="@color/yellow" />

<!--  Selected state (using d-pad) -->  
 <item android:state_focused="true" android:state_selected="true"
       android:state_pressed="false" android:drawable="@color/yellow" />

My Java code where I generate rows dynamically :

private void createView(TableRow tr, TextView tv, String data, int rowId) {
    tv.setText(data);

    tv.setTextColor(Color.WHITE);
    tv.setPadding(20, 0, 0, 0);

    tr.setPadding(0, 1, 0, 1);
    //tr.setBackgroundColor(Color.TRANSPARENT);
    tr.setBackgroundDrawable(this.getResources().getDrawable(R.drawable.tablerowselector));
    tr.setId(rowId);
    tr.setClickable(true);
    tr.setFocusable(true); // Added thinking that if its not focusable then it can't be selected, but makes no difference
    tr.setOnClickListener(this);
    tr.addView(tv);
}

If I handle in clickListener event, and set Background color of row based on setting prevRowSelected and currRowSelected logic, that works. But how to make selector work and why it is not working ? Can't selector work the way am trying to achieve it ?

Thanks

Any help is appreciated.


回答1:


As I understand, you have to change the selector. I have found the recipes here




回答2:


Friends, selector, doesn't work as I had expected. So have handled it programmatically using apprpriate logic and setting row's color.

Thanks to all.



来源:https://stackoverflow.com/questions/8927358/android-selector-isnt-working-as-expected-in-tablerow-selection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!