【问题标题】:My eyes and my fingers are telling me different things我的眼睛和我的手指在告诉我不同​​的事情
【发布时间】:2014-05-10 20:48:03
【问题描述】:

我以编程方式移动了具有多个子视图的布局。子视图全部显示在他们的新位置。但是,单击和触摸事件仍然像视图处于其旧位置一样工作。我该怎么办?

编辑:

我使用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

编辑

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

【问题讨论】:

  • 你用动画来做这个吗?
  • 请提供代码和布局
  • 请在你的问题标题中使用正确的词语
  • 您的问题标题的答案是咨询医生
  • 哈哈。很好。很好。我需要帮助,Vamshi 博士。 (其实我知道上面Mehul Joisar的评论是对的。但是,我已经从不同的角度来解决这个问题很长时间了。我之前发布过问题,但他们没有得到任何关注。)跨度>

标签: android view click location


【解决方案1】:

如果您正在使用 AnimationTranslation : 您的 LinearLayout 看似移动了,但只是视觉上移动了。LinearLayout 仍然是动画之前的位置。

在你的布局中试试这个:

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

我的回答来自here

你也可以看到this question

编辑

如果您正在使用 Canvas.translate:

尝试使用填充代替翻译:canvas.setPadding(getWidth(), 0);

【讨论】:

  • 我多次阅读您提供的链接,但不知道如何实施您的建议。也许是因为我没有使用动画。
  • 我试过canvas.setPadding(getWidth(), 0);,但我得到了错误:方法 setPadding(int, int) is undefined for the type Canvas
猜你喜欢
  • 2010-09-16
  • 2022-11-07
  • 2012-07-13
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
相关资源
最近更新 更多