如何使用ImageButton state_focused?

时间:2015-05-22 11:20:21

标签: android selector imagebutton

我的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);

我想点击按钮时使用效果。

正常(没有聚焦),聚焦,按下&lt; -

但是,国家重点不起作用 所以我看不到集中效果。 请帮帮我..

添加图片。 enter image description here

3 个答案:

答案 0 :(得分:2)

我解决了。

按钮选择器只有两种情况。 (按下,未按下)
我重写了ViewPagerIndicator中的onPageChangeListener()。

答案 1 :(得分:0)

只要按钮专注于使用state_focuseddpad,就会应用

trackball。在使用触摸时,视图通常不显示焦点状态。

答案 2 :(得分:0)

您可以使用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;
        }
    });

或者您可以在drawable中创建一个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);