Android:clipChildren = false和onClickListner用于剪裁的子项

时间:2017-04-12 12:49:50

标签: android onclick transition

我有一个问题。

我们有布局自定义框架布局,具有缩放和翻译功能

public class MyFrameLayout extends FrameLayout {
...
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    getChildAt(0).setTranslationX(vTranslate.x);
    getChildAt(0).setTranslationY(vTranslate.y);
    getChildAt(0).setScaleX(mScale.scaleFactor);
    getChildAt(0).setScaleY(mScale.scaleFactor);
}

该班级会侦听触摸手势和翻译/缩放其子级。 我将它用作带有内容的ViewGroup的父视图组。

<MyFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray"
android:clipChildren="false">

<android.support.constraint.ConstraintLayout
    android:id="@+id/calc_constraint_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clipChildren="false"/>

约束布局的内容添加了programmaticaly,它比屏幕或父组更大。因此我们设置了clipChildren = false。 但是,在转换之前超出范围的孩子们对onClick事件没有反应。

一些图片:

开始屏幕enter image description here

翻译后: enter image description here

6%节点无法回答点击次数。 求你帮帮我。

添加: enter image description here

1 个答案:

答案 0 :(得分:0)

好。我找不到制作约束布局(白色)以使内容适合wrap_content值的方法。我的解决方法是动态地增加约束布局的宽度和高度,相应地增加节点树的宽度和高度。

当您添加其他节点时 - 布局度量会增长,您会看到它如何调整abit。然后修复它我必须覆盖父布局中的onLayout()方法(屏幕截图上的绿色,但它是自定义的ZoomableLayout)。

现在一切正常。但是我不确定这个实现是否丑陋。