public class AppaSwitch extends AppCompatImageButton implements View.OnClickListener {
@Override
public void onClick(View v) {
}
}
与上述code
一样,有一种方法可以覆盖setEnabled()
中的android
功能。以下是一个示例,但我看不到像这样的方法
public class AppaSwitch extends AppCompatImageButton implements View.OnEnabled {
@Override
public void OnEnabled(View v) {
}
}
或者有没有其他方法可以做到这一点?
答案 0 :(得分:2)
setEnabled()是View类的方法,而AppCompatImageButton
已经扩展了View
Class,所以你可以直接覆盖这里所做的:
public class AppaSwitch extends AppCompatImageButton {
@Override
public void setEnabled(boolean enabled) {
//your piece of code
//if you want to remove below line to remove the function of super class.
super.setEnabled(enabled);
}
}
答案 1 :(得分:1)
您需要扩展View
类才能覆盖setEnabled
,然后定义自己的接口以实现此类onEnabled
回调方法。
但是,我认为您应该使用Switch
或其他CompoundButton
来确定onCheckChanged
。
或者您可以使用常规点击监听器和一些EventBus
库来通知视图启用
答案 2 :(得分:1)
创建如下所示的自定义开关
public class AppCustomSwitch extends AppCompatImageButton {
private OnEnabledListener listener;
public AppCustomSwitch(Context context) {
super(context);
}
public AppCustomSwitch(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AppCustomSwitch(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
if(enabled){
listener.OnEnabled(this);
}
}
public void setOnEnabledListener(OnEnabledListener listener) {
this.listener = listener;
}
public interface OnEnabledListener{
public void OnEnabled(View v);
}
}
并使您的活动/片段实施AppCustomSwitch.OnEnabledListener
public class TestActivity extends AppCompatActivity implements AppCustomSwitch.OnEnabledListener{
private AppCustomSwitch customSwitch;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
customSwitch = findViewById(R.id.custom_switch);
customSwitch.setOnEnabledListener(this);
}
@Override
public void OnEnabled(View v) {
// your stuff here
}
}
答案 3 :(得分:-1)
你不能seEnabled();
方法,因为它是一个setter方法,而不是interface
方法