Я не уверен, что это даже возможно. У меня есть эта кнопка:
<Button
android:id="@+id/b1"
android:layout_width="wrap_content"
android:layout_height="45px"
android:drawableTop="@drawable/buttontv"
android:layout_weight="1"
android:background="@null"
android:textColor="#ffffff"
android:textSize="9px"
android:text="TV"/>
И эта кнопка имеет этот элемент XML:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:state_pressed="false"
android:drawable="@drawable/tv" />
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/tv_pressed" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/tv_pressed" />
<item
android:drawable="@drawable/tv" />
</selector>
И в моем приложении я использую этот код для нажатия моей кнопки:
OnClickListener b1Listener = new OnClickListener(){
@Override
public void onClick(View v) { loadUrl("http://example.org/"); v.setPressed(true); }
};
Button b1 = (Button) findViewById(R.id.b1);
b1.setOnClickListener(b1Listener);
Что бы я хотел сделать, когда я нажал кнопку, drawableTop устанавливает один из элементов со значением атрибута @ drawable / tv_pressed - и остается там (как в «это активная кнопка»).
Я попытался добавить v.setPressed (true) в функцию onClick (поскольку это было все, что я мог найти в Google), но это не сработало.
Можно ли это сделать? Или есть лучшая альтернатива тому, чего я пытаюсь достичь?