我使用ImageButton拨打电话,但是在我单击showPhoneNumberBtn ImageButton之前,它应该不可单击。
ImageButton showPhoneNumberBtn = root.findViewById(R.id.showPhoneNumberBtn);
showPhoneNumberBtn.setOnClickListener(new View.OnClickListener() {
@SuppressLint("ResourceAsColor")
@Override
public void onClick(View v) {
TextView phoneNumber = root.findViewById(R.id.phoneNumberText);
phoneNumber.setText(currentUser.getPhoneNumber());
ImageButton makeCallBtn = root.findViewById(R.id.makeCallBtn);
makeCallBtn.setClickable(true);
Drawable img = getContext().getDrawable(R.drawable.ic_call_black_24dp);
img.setTint(Color.parseColor("#3CB371"));
makeCallBtn.setBackground(img);
}
});
ImageButton makeCallBtn = root.findViewById(R.id.makeCallBtn);
makeCallBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CALL_PHONE}, 1);
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:" + phoneNumber));
startActivity(callIntent);
} else {
Toast.makeText(getContext(), "You don't assign permission.", Toast.LENGTH_SHORT).show();
}
}
});
使用setOnClickListener
将可点击状态重置为true。之后,您需要将其设置为false。
从源代码:
public void setOnClickListener(OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
getListenerInfo().mOnClickListener = l;
}
可以在here中找到详细的说明。
您应该从开始禁用makeCallBtn
可点击。
您可以通过Java代码禁用它:
makeCallBtn.setClickable(false);
或来自XML:
android:enabled="false"