Динамический интерфейс в Android: Как добавить текстовые поля и редактировать тексты в правильном положении? - PullRequest
1 голос
/ 17 марта 2012

Я хочу создать пользовательский интерфейс, который изначально имеет кнопку, при нажатии на которую в верхней части экрана добавляются TextView и EditText (помещенные в отдельный XML-файл для надувания), а кнопка перемещается вниз под Редактировать текст. Повторное нажатие на кнопку добавляет еще один TextView и EditText под предыдущими, и кнопка снова сдвигается ниже (вроде как мы добавляем новый номер к контакту в Android, нажимая маленький зеленый значок «+»).

Мне удалось раздуть TextView и EditView из программы, но положение всех представлений неверно: я получаю TextView и EditText, но кнопка исчезает при нажатии. Буду признателен за пример кода, который показывает, как сделать что-то похожее на то, что я описал.

Ответы [ 2 ]

0 голосов
/ 17 марта 2012

Проверьте приведенный ниже код один раз, который работает нормально.

final LinearLayout _layout = (LinearLayout) findViewById(R.id.totalview);
        final LayoutInflater inflator = LayoutInflater.from(this);
        Button b = (Button)findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                LinearLayout v = (LinearLayout)inflator.inflate(R.layout.add_view, null);
                _layout.addView(v,0);
            }
        });
0 голосов
/ 17 марта 2012

Это в основном развлекается с LayoutParams.

Чтобы упростить задачу, вы должны создать несколько элементов, аналогичных тем, которые вы хотите, в области визуальной разработки eclipse для макетов xml. Это поможет вам лучше понять свойства, необходимые для определенного вида.

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

Это, по сути, основной подход: 1. Перейдите к макету XML и добавьте несколько текстовых полей и / или отредактируйте текст в предпочтениях, которые вам нравятся, как если бы вы были мобильным телефоном, а пользователь нажимает кнопки, необходимые для динамического добавления этих представлений.

  1. Посмотрите на свойства, которые вы откорректировали, чтобы получить этот конкретный вид

  2. Это основной подход кодирования ко всему этому:

Здесь я покажу вам, как добавить TextView в ViewGroup

LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD lp = 
new LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD
(LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD.WRAP_CONTENT,
LayoutParams.LAYOUT_TYPE_HOLDING_THE_VIEW_YOU_WILL_ADD.WRAP_CONTENT);

lp.gravity = Gravity.Right;
lp.weight = 1f;

//And so on
TextView tv = new TextView(Context);
tv.setLayoutParams(lp);

LAYOUT_HOLDING_THE_VIEW.add(tv);

//NOTES:
//Sometimes the program may not update these changes, so just to be safe, you can go    ahead and call this method:

LAYOUT_HOLDING_THE_VIEW.invalidate(); once you are done adding these fields.

Так что большую часть времени надо делать;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...