我以编程方式移动了一个包含多个子视图的布局。孩子在新职位上查看所有显示内容。但是,点击和触摸事件仍在运行,就像视图处于旧位置一样。我该怎么办?
修改
我使用translate
和scale
来移动布局。以下是扩展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
修改
没有解决方案?我放弃了。
答案 0 :(得分:0)
如果您正在使用AnimationTranslation: 您的LinearLayout似乎已被移动,但它只是在视觉上移动.LineLayout仍然是动画之前的位置。
尝试使用您的布局:
mylayout.layout(x,x,x,x);
我从here
收到了答案您还可以看到this question
<强> 修改 强>
如果您正在使用Canvas.translate:
尝试填充代替翻译:{{1}}