#android #android-layout #viewstub
#Android #android-layout #viewstub
Вопрос:
Я пытаюсь использовать VIEWSTUB внутри тега слияния. и он работает хорошо.Я могу перехватить onclicklistenr родительской кнопки ViewStub.Но я хочу получить доступ к кнопке, которая находится внутри viewstub.
1. Основной xml:
<merge>
<LinearLayout>
<Button></Button>
<ViewStub></ViewStub>
</LinearLayout>
</merge>
2. просмотр макета заглушки
<Button android:id="@ id/button_cancel" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:minWidth="100dip"
android:text="Next" />
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@ id/imageView"
android:background="@drawable/golden_gate"
/>
</LinearLayout>
Я раздуваю заглушку view в activity…здесь я хочу запустить событие щелчка по кнопке отмена.Как это будет возможно
Комментарии:
1. Пожалуйста, посмотрите полный код, нажав на редактировать
Ответ №1:
Давайте предположим, что ваш ИДЕНТИФИКАТОР ViewStub равен view_stub. В этом действии вам нужно выполнить следующее:
ViewStub viewStub = (ViewStub) findViewById(R.id.view_stub);
View inflatedView = viewStub.inflate();
Button button = (Button) inflatedView.findViewById(R.id.button_cancel);
Теперь вы можете делать все, что хотите, с помощью кнопки 🙂 То есть метод inflate возвращает макет заглушки, который содержит фактические элементы из XML-файла.
Конечно, вы всегда можете использовать атрибут onClick XML…
Что касается удаления ViewStub — вопрос двоякий (проверьте http://developer.android.com/resources/articles/layout-tricks-stubs.html ):
-
перед расширением ViewStub — вы не можете фактически удалить его. Однако в этом нет необходимости, поскольку ViewStub «не имеет размера, он ничего не рисует и никоим образом не участвует в макете».
-
после накачки — вы просто берете представление, возвращенное методом ViewStub.inflate(), и делаете с ним все, что хотите — например, скрываете его.
Комментарии:
1. Спасибо, Камен.. Если я хочу динамически удалять заглушку со своего экрана. Как это удалить?