我的眼睛和手指告诉我不同​​的事情

时间:2014-05-08 09:31:20

标签: android view click location

我以编程方式移动了一个包含多个子视图的布局。孩子在新职位上查看所有显示内容。但是,点击和触摸事件仍在运行,就像视图处于旧位置一样。我该怎么办?

修改

我使用translatescale来移动布局。以下是扩展LinearLayout的类的代码:

@Override
protected void onDraw(Canvas canvas) {
    canvas.translate(getWidth(), 0);
    canvas.scale(-1, 1);
    super.onDraw(canvas);
}

我在多个活动中使用这个新布局,但所有这些问题都是一样的。这是一个更简单的布局:

<?xml version="1.0" encoding="utf-8"?>
<com.example.myapp.NewLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <GridView
        android:id="@+id/chapter_gridview"
        style="@style/GridStyle" />

</com.example.myapp.NewLayout>

任何解决方案?

更新

一种方法可能是更新LayoutParams但我不知道该怎么做。这些是我发现的一些相关问题:

OnClickListener issues after ImageButton moved after TranslateAnimation

How can I dynamically set the position of view in Android?

http://www.clingmarks.com/how-to-permanently-move-view-with-animation-effect-in-android/400

修改

没有解决方案?我放弃了。

1 个答案:

答案 0 :(得分:0)

如果您正在使用AnimationTranslation: 您的LinearLayout似乎已被移动,但它只是在视觉上移动.LineLayout仍然是动画之前的位置。

尝试使用您的布局:

mylayout.layout(x,x,x,x);

我从here

收到了答案

您还可以看到this question

<强> 修改

如果您正在使用Canvas.translate:

尝试填充代替翻译:{{1​​}}