在自定义视图中组合视图功能的良好实践

时间:2016-03-04 16:17:47

标签: android android-layout

我正在开发一个从View延伸的自定义RelativeLayout, 包含两个ImageView和一个EditText作为子视图。

我想要一个ImageViewEditText就像一个View。因此,如果用户点击其中一个,他们应该获得应该向用户显示的焦点,如下所示。 EditText的默认焦点动画应该保留,ImageView(矢量绘图)上的可绘制图像也应该改变它的颜色。问题是,EditText需要两次点击才能调用onClick回调。我通过将focusableInTouchMode属性设置为false找到了解决方案。但是,使用此解决方案,焦点会丢失。

也许我应该通过覆盖EditText的onFocus回调并重定向到onClick方法并以此设置ImageView的焦点来以编程方式解决此问题。但在可重用性的情况下,这似乎是不好的做法。

那么,结合这两种观点的特征是一种很好的做法吗?

1 个答案:

答案 0 :(得分:0)

View.onClickListener上设置RelativeLayout,然后在requestFocus()上设置EditText

mYourRelativeLayout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mYourEditText.requestFocus();
    }
});