enter code here
我发现有关堆栈溢出的类似问题,但无法找出解决方案。我是android的新手。我有一个工具栏,我正在尝试实现一个" Like"工具栏上的按钮。基本上在viewPager的视图中,我向用户显示一些引用,如果用户喜欢它,他们可以点击工具栏上的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>
答案 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);