2015-08-03 2 views
0

Здравствуйте, я хочу добавить LAyout к своей работе.Как добавить макет

У меня есть FrameLayout, где я добавляю SurfaceView до сих пор.

Теперь я хочу добавить еще один макет в качестве меню над ним, поэтому, когда я нажимаю кнопку на моем представлении поверхности, я устанавливаю его видимым.

Этот макет должен содержать один TextView и должен быть прокручивать

1: Что такое лучший LAyoutout вещь для такого подхода? Я думал о Listview, где я динамически добавляю Strings.

2: Как я могу достичь этого в коде?

Должно быть:

Прокручиваемый. Должен быть определенный размер: половина ширины экрана и половина экранаHeight Так что это также должно быть в положении screenWidth/4 и screenHeight/Для этого я могу установить эти параметры в моем mainThread, который подключен к поэтому у меня есть параметры, необходимые в формате Pixel, и это не проблема. Он должен потерять Фокус, когда Пользователь удаляется за пределы видимости, поэтому моя поверхностьView получает Focusagain и устанавливает LAyout To Gone.

Так оно и должно идти, как это:

Пользователь вводит кнопку для отображения меню Теперь пользователь может прокручивать меню Когда он нажимает BackButton или снаружи Вид Он должен закрыть сам Когда это новый текст, который должен отображаться она должна быть прикреплена к макету, чтобы быть готовым отображаться в следующий раз, когда пользователь нажимает на кнопке еще раз

Спасибо

ответ

0

1: Какая лучшая вещь LAyoutout для этого подхода? Я подумал о Listview, где я добавить TextViews динамически

Это звучит хорошо для меня, вы можете пойти с любой ListView или RecyclerView. Вы в основном не добавляете динамически TextView, вы создаете адаптер, который будет обрабатывать создание и переработку просмотров для вас.

2: Как я могу достичь этого в коде?

Создайте DialogFragment, это лучший кандидат для таких диалогов с логикой. Его жизненный цикл обрабатывается через FragmentManager, поэтому у вас не будет проблем при поворотах экрана и т. Д. Это позволяет вам настроить любой макет, который вам нужен, как и любой другой Fragment. Он будет размещен в центре для вас, поэтому вам не придется обращаться с этим вручную. Просто установите размер диалогового окна, который вам нужен, и он будет выглядеть идеально.

Он должен потерять фокус, когда пользователь выходит за пределы видимости, поэтому моя поверхностьView получает Focusagain и устанавливает LAyout To Gone.

Я действительно не понимаю этот вопрос.Когда пользователь прикасается наружу, вам нужно потерять фокус, но диалог должен быть закрыт? не? Если да, то это уже ответил здесь:

Allow outside touch for DialogFragment

Если диалог должен быть закрыт, вы не должны выполнять что-либо, она работает, как, что по умолчанию.

+0

Спасибо за ответ, к сожалению, я хочу, чтобы избежать беспорядка с фрагментами ... не могу Я делаю это с нормальными представлениями, которые я устанавливаю видимыми или невидимыми, это гораздо меньше работы. Я думаю, –

+0

Вы можете сделать это без фрагментов, но это будет сложнее .. 1. Вам нужно будет обрабатывать состояние сохранения и виды при поворотах 2. Вам нужно будет вернуться назад на кнопку 3. Вам придется обрабатывать касание вне 4. Проблемы с пользовательским интерфейсом, такие как он не будет выглядеть как родной диалог, по крайней мере, отметка 5. Весь код перейдет к плохой работе. 6. Сложная структура деятельности. Я не вижу никакого преимущества в том, что здесь не используется фрагмент диалога. –

+0

Я уже обрабатываю кнопку вращения и возврата. Я делаю это во всех моих приложениях, так что все в порядке. Я также полностью управляю всеми событиями касания. И весь код переходит в поток. Я не делаю ничего, кроме инициализации Activity (за исключением кода, который должен выполняться в отношении активности, но тогда это просто runOnUiThread). –

Смежные вопросы