Android 在customview中组合视图功能的良好实践
我正在开发一个自定义的Android 在customview中组合视图功能的良好实践,android,android-layout,Android,Android Layout,我正在开发一个自定义的视图,它扩展自RelativeLayout, 包含两个ImageViews和一个EditText作为子视图 我想要一个ImageView和EditText像一个视图一样工作。因此,如果用户单击其中一个,它们都应获得焦点,用户应将其可视化,如下所示。EditText的默认焦点动画应保持不变,并且ImageView(vector drawable)上可绘制的图像也应更改其颜色。问题是,EditText需要两次单击才能调用onClick回调。我通过将其focusableInTou
视图
,它扩展自RelativeLayout
,
包含两个ImageView
s和一个EditText
作为子视图
我想要一个ImageView
和EditText
像一个视图一样工作。因此,如果用户单击其中一个,它们都应获得焦点,用户应将其可视化,如下所示。EditText的默认焦点动画应保持不变,并且ImageView
(vector drawable)上可绘制的图像也应更改其颜色。问题是,EditText
需要两次单击才能调用onClick回调。我通过将其focusableInTouchMode
属性设置为false
找到了解决方案。但是,使用此解决方案时,焦点会丢失
也许我应该通过编程方式解决这个问题,方法是覆盖EditText
的onFocus回调,重定向到onClick方法,并在那里设置ImageView
的焦点。但在可重用性方面,这似乎是一种不好的做法
那么,结合这两个视图的功能有什么好的做法呢?设置一个视图。在相对视图上单击Listener
,然后在编辑文本上单击requestFocus()
mYourRelativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mYourEditText.requestFocus();
}
});
设置视图。在RelativeLayout
上单击Listener
,然后在编辑文本上单击requestFocus()
mYourRelativeLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mYourEditText.requestFocus();
}
});
什么意思?“不存在”?你又失去了对EditText
的关注?在FocusChangedListeners上有什么特别的吗?是的,我现在正在尝试这个回调。但是requestFocus()似乎从来都不起作用(我已经将focusable设置为true)。对我来说效果非常好。EditText
总是focusableInTouchMode
。看起来你的问题是一开始就把它设为false。很高兴你成功了。你什么意思?“不存在”?你又失去了对EditText
的关注?在FocusChangedListeners上有什么特别的吗?是的,我现在正在尝试这个回调。但是requestFocus()似乎从来都不起作用(我已经将focusable设置为true)。对我来说效果非常好。EditText
总是focusableInTouchMode
。看起来你的问题是一开始就把它设为false。很高兴你让它工作了。