如何使用ImageButton state_focused?
How to use ImageButton state_focused?
我的xml文件
<LinearLayout
android:id="@+id/fragmentSelectorArea"
android:layout_width="fill_parent"
android:layout_height="@dimen/main_seletor_height"
android:layout_marginBottom="@dimen/main_seletor_margin_bottom"
android:background="@color/mainBtnBg" >
<ImageButton
android:id="@+id/myBtn"
android:layout_width="0dp"
android:layout_height="@dimen/main_btn_height"
android:layout_weight="1"
android:background="@drawable/btn_selector" />
</LinearyLayout>
btn_selector.xml
<item android:state_pressed="true"
android:drawable="@drawable/pressed_btn" />
<item android:state_focused="true"
android:drawable="@drawable/focused_btn" />
<item android:drawable="@drawable/nonselected_btn"/>
activity.java
ImageButton btn1 = (ImageButton) findViewById(R.id.myBtn);
OnClickListener btnListener = new OnClickListener() {
@Override
public void onClick(View btn) {
switch (btn.getId()) {
case R.id.myBtn:
mPager.setCurrentItem(0);
break;
...
default:
break;
}
}
};
btn1.setOnClickListener(btnListener);
我想在点击按钮时使用效果。
正常(无焦点)、焦点、按下<-
但是 state_focused 不工作。
所以看不到聚焦效果。
请帮帮我..
添加图片。
state_focused
在按钮聚焦于使用 dpad
或 trackball
时应用。使用触摸时,视图通常不会显示聚焦状态。
您可以使用 setonTouchListener 为您的 ImageButton 的触摸创建效果,例如...
myBtn.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN)
myBtn.setImageResource(R.drawable.quit_yes_selected);
else if(event.getAction() == MotionEvent.ACTION_UP)
myBtn.setImageResource(R.drawable.quit_yes);
return false;
}
});
或者您只需在可绘制对象中创建一个 btn_selector.xml 文件并将其设置为您的 ImageBackgroundResource,例如
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, you should use bg with grey -->
<item android:drawable="@drawable/pressed_btn"
android:state_selected="true" />
<!-- When not selected, you should use bg with white -->
<item android:drawable="@drawable/nonselected_btn" />
</selector>
并且在 java 中,您必须将 ImageButton 背景资源分配为该文件
myBtn.setBackgroundResource(R.drawable.btn_selector);
我解决了
按钮选择器只有两种情况。 (按下,未按下)
我覆盖了 ViewPagerIndicator 中的 onPageChangeListener()。
我的xml文件
<LinearLayout
android:id="@+id/fragmentSelectorArea"
android:layout_width="fill_parent"
android:layout_height="@dimen/main_seletor_height"
android:layout_marginBottom="@dimen/main_seletor_margin_bottom"
android:background="@color/mainBtnBg" >
<ImageButton
android:id="@+id/myBtn"
android:layout_width="0dp"
android:layout_height="@dimen/main_btn_height"
android:layout_weight="1"
android:background="@drawable/btn_selector" />
</LinearyLayout>
btn_selector.xml
<item android:state_pressed="true"
android:drawable="@drawable/pressed_btn" />
<item android:state_focused="true"
android:drawable="@drawable/focused_btn" />
<item android:drawable="@drawable/nonselected_btn"/>
activity.java
ImageButton btn1 = (ImageButton) findViewById(R.id.myBtn);
OnClickListener btnListener = new OnClickListener() {
@Override
public void onClick(View btn) {
switch (btn.getId()) {
case R.id.myBtn:
mPager.setCurrentItem(0);
break;
...
default:
break;
}
}
};
btn1.setOnClickListener(btnListener);
我想在点击按钮时使用效果。
正常(无焦点)、焦点、按下<-
但是 state_focused 不工作。
所以看不到聚焦效果。
请帮帮我..
添加图片。
state_focused
在按钮聚焦于使用 dpad
或 trackball
时应用。使用触摸时,视图通常不会显示聚焦状态。
您可以使用 setonTouchListener 为您的 ImageButton 的触摸创建效果,例如...
myBtn.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN)
myBtn.setImageResource(R.drawable.quit_yes_selected);
else if(event.getAction() == MotionEvent.ACTION_UP)
myBtn.setImageResource(R.drawable.quit_yes);
return false;
}
});
或者您只需在可绘制对象中创建一个 btn_selector.xml 文件并将其设置为您的 ImageBackgroundResource,例如
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, you should use bg with grey -->
<item android:drawable="@drawable/pressed_btn"
android:state_selected="true" />
<!-- When not selected, you should use bg with white -->
<item android:drawable="@drawable/nonselected_btn" />
</selector>
并且在 java 中,您必须将 ImageButton 背景资源分配为该文件
myBtn.setBackgroundResource(R.drawable.btn_selector);
我解决了
按钮选择器只有两种情况。 (按下,未按下)
我覆盖了 ViewPagerIndicator 中的 onPageChangeListener()。