如何使用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 在按钮聚焦于使用 dpadtrackball 时应用。使用触摸时,视图通常不会显示聚焦状态。

您可以使用 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()。