#android #google-maps #android-linearlayout
#Android #google-карты #android-linearlayout
Вопрос:
У меня есть этот код:
Button go_back_maps = (Button)findViewById(R.id.Button02);
go_back_maps.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
slide_down Fx = new slide_down();
setts.setVisibility(View.GONE);
Fx.slide_up(Awake.this, setts);
pick.setVisibility(View.VISIBLE);
Fx.slide_down(Awake.this, pick);
}
});
В основном это:
Два макета, Map и MapSettings, когда пользователь устанавливает маркер в макете карты и нажимает продолжить, скрывается макет карты с анимацией сдвига вверх и отображается макет MapSettings с анимацией сдвига вниз.
Моя проблема в том, что когда пользователь нажимает «Вернуться», он снова открывает карту, а когда пользователь нажимает на карту, чтобы изменить маркер — он реагирует на кнопки макета MapSettings, что делает невозможным изменение маркера или взаимодействие с картой.
В чем проблема? Эти строки являются единственными строками кода, которые отвечают за переключение между map и mapsettings.
Есть ли какой-нибудь способ перезагрузить макет или что-то в этомроде?
Кстати, вот класс эффектов:
public static void slide_down(Context ctx, View v){
Animation a = AnimationUtils.loadAnimation(ctx, R.anim.slide_down);
if(a != null){
a.reset();
if(v != null){
v.clearAnimation();
v.startAnimation(a);
}
}
}
public static void slide_up(Context ctx, View v){
Animation a = AnimationUtils.loadAnimation(ctx, R.anim.slide_up);
if(a != null){
a.reset();
if(v != null){
v.clearAnimation();
v.startAnimation(a);
}
}
}
}
Комментарии:
1. Ваше предложение, в котором вы заявляете «Моя проблема в том, что Когда пользователь …», другим трудно понять. Пожалуйста, объясните это более подробно. Лучше предоставить слишком много деталей и констатировать очевидное, чем недостаточно.
Ответ №1:
Ваше описание проблемы немного сложно для понимания.
Однако, что касается вашего вопроса:
«Есть ли какой-нибудь способ перезагрузить макет или что-то в этомроде?»
Вот несколько вещей, которые следует учитывать:
1) Вы можете настроить макет для действия с помощью setContentView(R.layout.my_layout)
, но имейте в виду, что многократный вызов setContentView()
в ходе действия сопряжен с рядом подводных камней, которые могут сбить вас с толку. Все ссылки, которые вы сохраняете на представления в предыдущем макете, необходимо будет сбросить, и для безопасности вам следует полностью удалить все существующие представления, прежде чем раздувать новый.
2) Вы можете сделать макет недействительным, в результате чего он будет отрисован заново.
ViewGroup vg = findViewById (R.id.my_layout);
vg.invalidate();