问题
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