Как можно динамически добавить View в ViewGroup и выровнять по вертикали с одним из его дочерних элементов - PullRequest
2 голосов
/ 11 февраля 2010

У меня есть ViewGroup, и у нее есть несколько детей. И одним из них является TextView («+ id / text»). В моем коде я хотел бы знать, как я могу добавить новый View или ViewGroup, который будет расположен вертикально и ниже TextView (+ "id / text")?

Спасибо.

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

Вот мой макет xml:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/panel" xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight">

    <TableRow
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <ImageButton
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:src="@drawable/icon"
        android:layout_column="0" />

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dip"
        android:layout_weight="1"
        android:layout_height="fill_parent"
        android:layout_column="1">

        <TextView
            android:id="@+id/text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"                    
            android:gravity="left" />
    </LinearLayout>
   </TableRow>
   <TableRow>
    <ImageButton
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:src="@drawable/icon"
        android:layout_column="1"/>
    </TableRow>
</TableLayout>

Но когда я запускаю на эмуляторе. Кнопка Image во 2-й строке не выравнивается по вертикали с textView в 1-й строке. Есть идеи почему?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2010

Рассмотрите возможность использования TableLayout в качестве вашей ViewGroup. С помощью TableLayout вы можете программно добавить ребенка в определенном месте.

View view = new ViewIWantToAdd();
TableLayout layout = (TableLayout)findViewById(R.id.table_layout);
layout.addView(view);

Добавил бы вид внизу TableLayout. Обычно вы используете TableRow в качестве содержимого TableView, но вы можете добавить любое представление.

1 голос
/ 11 февраля 2010

Если ваш макет не такой сложный, используйте RelativeLayout developer.android.com/reference/android/widget/RelativeLayout.html
«Схема, в которой позиции детей могут быть описаны по отношению друг к другу или к родителю ...»

Когда вы вставляете новый дочерний вид, создайте новый LayoutParams, а затем setRule. http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html#addRule(int, int)

Вы можете поместить дочерний вид ниже textView с этим developer.android.com / ссылка / Android / виджет / RelativeLayout.html # НИЖЕ

:)

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