Мои глаза и мои пальцы говорят мне разные вещи

Я программно переместил макет с несколькими дочерними представлениями. Ребенок просматривает все показы в их новых положениях. Однако события щелчка и касания по-прежнему работают так, как если бы представления находились на своих прежних позициях. Что я делаю?

Редактировать:

я использовал 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 после перемещения ImageButton после TranslateAnimation

Как я могу динамически установить положение просмотра в Android?

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

редактировать

Нет решений? Я сдаюсь тогда.

1 ответ

Если вы работаете с AnimationTranslation: ваш LinearLayout, казалось бы, был перемещен, но он просто визуально перемещен. LinearLayout все еще находится там, где он был до анимации.

попробуйте это в вашем макете:

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

Я взял мой ответ отсюда

Вы также можете увидеть этот вопрос

РЕДАКТИРОВАТЬ

Если вы работаете с Canvas.translate:

попробуйте заполнить вместо перевода: canvas.setPadding(getWidth(), 0);

Другие вопросы по тегам