我不确定这是否可能。我有一个按钮:
<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属性值的项目之一,并保持在那里(就像“这是当前活动按钮”)。
我尝试在onClick函数中添加v.setPressed(true)(因为这是我在Google上找到的所有内容),但这并没有起作用。
这能做到吗?还是有更好的替代方案来实现我想要的目标?