我是Android新手,刚开始非常基础。我使用.9.png图像为norma / focus / pressed状态实现我的自定义按钮皮肤。它工作正常,但我注意到按下聚焦按钮后,它在视觉上“失去”焦点并绘制正常的状态框架。我计划使用不同的状态图像来高亮显示当前选择的按钮,但似乎它不起作用。我还注意到默认的LAF按钮也是如此。没关系,还是只是模拟器问题?可以使用什么好的workaroud?
由于
答案 0 :(得分:1)
我认为以下内容可能有所帮助。我希望按钮列表中的一个按钮的颜色不同,以突出显示您已经在该部分中的事实。
我的按钮android:background字段设置为以下drawable(drawable / my_btn.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="@drawable/btn_pressed" />
<item android:state_focused="true" android:drawable="@drawable/btn_focused" />
<item android:state_selected="true" android:drawable="@drawable/btn_selected" />
<item android:drawable="@color/transparent" />
</selector>
你会注意到我有一个带有android:state_selected =“true”属性集的项目。
然后在代码中你可以拥有
Button mybtn = (Button)findViewById(R.id.my_btn_1);
mybtn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Button btn = (Button)findViewById(R.id.nav_secondary_1);
btn.setSelected(true);
}
});
我不确定您是否可以通过xml中的属性设置Button的选定属性。不确定你是否愿意。
项目的顺序也很重要,因为它可以改变其他状态的可见性。当前顺序将允许您查看按下和聚焦状态。但是,如果您将所选项目移到顶部,您会发现您的按下和聚焦状态将不会显示。
我不确定您是否可以将按下的,聚焦的和选定的状态组合在一起以允许更多自定义图形。我没有尝试过,但以下将允许更复杂的基于状态的图形布局。
<item android:state_selected="true" android:state_focused="true" android:drawable="@drawable/btn_selected_focused" />
在此处阅读选择器http://developer.android.com/guide/topics/resources/drawable-resource.html
答案 1 :(得分:0)
这是触摸模式下的默认行为,您不应该试图篡改它。这就是您的用户对您的应用的期望。如果您在不触摸屏幕的情况下设置焦点,例如使用大多数设备上可用的轨迹球时,它确实会保持焦点,但在触摸模式下,没有可视化表示焦点状态。