Android工具栏:点击图片按钮不会保持不变

时间:2016-05-11 11:14:10

标签: android android-toolbar android-imagebutton android-selector

enter code here我发现有关堆栈溢出的类似问题,但无法找出解决方案。我是android的新手。我有一个工具栏,我正在尝试实现一个" Like"工具栏上的按钮。基本上在viewPager的视图中,我向用户显示一些引用,如果用户喜欢它,他们可以点击工具栏上的like按钮。稍后,我计划实现用户可以访问他的"喜欢"报价。我有以下问题:

  • 1)这是正确的方法吗?我的意思是我应该放一个图像按钮 在工具栏上,然后处理点击?
  • 2)现在,当我点击" Like"按钮它变为黑暗 但是它会立刻回到边界心脏。我想要它 在用户点击它之前保持黑暗。
  • 3)任何类似示例的链接都会非常有用。

工具栏:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.Toolbar
    android:id="@+id/quote_reader_toolbar"
    android:minHeight="?attr/actionBarSize"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    android:titleTextColor="#ffffff">

    <ImageButton
        android:id="@+id/btnLike"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_feed_action"

         />

</android.support.v7.widget.Toolbar>

最后处理Imagebutton点击:

   public void addListenerOnButton() {

    likeButton = (ImageButton) findViewById(R.id.btnLike);

    likeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Log.d(TAG, "Like bUTTON pRESSED");

        }

    });

}

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_pressed="true"
    android:drawable="@drawable/ic_favorite_black_24dp" /> <!-- pressed -->
<item
    android:drawable="@drawable/ic_favorite_border_black_24dp" /> <!--     default -->
</selector>

3 个答案:

答案 0 :(得分:1)

那么,对于你的第二个问题,不,这不是正确的方法。为什么?因为state_pressed="true"选项意味着您按下按钮并保持按下它,一旦您停止按下它,只需更改为默认状态。

那怎么办?您可以通过onClick方法更改后台资源的代码轻松完成,如下所示:

YOURBUTTON.setBackgroundResource(YOUR_IMAGE);

希望它可以帮助你:)

答案 1 :(得分:0)

试试这个......

 public void addListenerOnButton() {

    likeButton = (ImageButton) findViewById(R.id.btnLike);

    likeButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Log.d(TAG, "Like bUTTON pRESSED");
            likeButton.setBackgroundResource(R.drawable.ic_favorite_black_24dp);
        }

    });

}

或者你也可以创建一个形状button_pressed.xml

例如

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="@color/grey" />

    <stroke
        android:width="xxdp"
        android:color="@color/grey" />

    <padding
        android:bottom="xx dp"
        android:left="xx dp"
        android:right="xx dp"
        android:top="xx dp" />

</shape>

然后

    Drawable dr = getResources().getDrawable(R.drawable.button_pressed);

    likeButton.setBackgroundDrawable(dr);

答案 2 :(得分:0)

使用ImageButton声明Toolbar作为根视图

likeButton = (ImageButton) toolbar.findViewById(R.id.btnLike);