XML:
<ImageButton
android:layout_width="0dp"
android:layout_weight="0.2"
android:layout_height="wrap_content"
app:srcCompat="@drawable/vo_selector"
android:id="@+id/ibS"
android:background="@android:color/transparent" />
XML:
ibS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ibS.setPressed(true);
Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_LONG).show();
}
});
我试图在点击后变为淡蓝色,之后变为深蓝色。
var request = new RetrieveEntityChangesRequest
{
EntityName = entityLogicalName,
DataVersion = dataToken,
Columns = columnSet,
PageInfo = new PagingInfo { Count = Constants.DefaultCRMChunkSize, PageNumber = 1, ReturnTotalRecordCount = false }
};
当我点击它时,它是如何实现的,它保持在按下/选择状态,并且可绘制从黑色变为蓝色,当我再次点击它时,它会自动退回/取消选择并变回黑色。 / p>
答案 0 :(得分:1)
使用按钮代替图像按钮,因为在这种情况下,您将需要两个图像资源。
使用drawable:
按钮未按下状态:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/colorPrimary" />
<padding android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
<solid android:color="@color/colorPrimary" />
</shape>
按钮按下状态:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/colorPrimaryDark" />
<padding android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
<solid android:color="@color/colorPrimaryDark" />
</shape>
现在在需要时将此设置为drawable。
答案 1 :(得分:1)
当您从按钮上移开手指时,按下的状态将始终重置为false
,因此您无法使用该状态。
您应该通过声明成员变量
private boolean isPressed = false;
然后在单击按钮时直接设置图像按钮的背景
ibS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isPressed = !isPressed;
if (isPressed) {
ibS.setBackgroundColor(R.color.your_blue_color);
//use code below if you want to use drawable background
//ibS.setBackgroundResource(R.drawable.background_pressed);
} else {
ibS.setBackgroundColor(R.color.your_black_color);
//use code below if you want to use drawable background
//ibS.setBackgroundResource(R.drawable.background_normal);
}
}
});
答案 2 :(得分:1)
您可以尝试使用drawable ::
的选定状态ibS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ibS.setPressed(true);
Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_LONG).show();
}});
将第ibS.setPressed(true);
行更改为ibS.setSelected(!ibs.isSelected());
因此,它会将图像的drawble更改为selected_state图像在drawable中定义所选择的状态..再次单击..将恢复最后一个状态... 试试这个..
答案 3 :(得分:0)
ibS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ibS.setBackground(ContextCompat.getDrawable(your Context,R.drawable.voselected));
Toast.makeText(MainActivity.this, "clicked", Toast.LENGTH_LONG).show();
}
});