Мои глаза и мои пальцы говорят мне разные вещи
Я программно переместил макет с несколькими дочерними представлениями. Ребенок просматривает все показы в их новых положениях. Однако события щелчка и касания по-прежнему работают так, как если бы представления находились на своих прежних позициях. Что я делаю?
Редактировать:
я использовал 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);