Кнопка не хочет идти прямо в TableLayout - PullRequest
0 голосов
/ 07 июня 2011

Что не так с этим кодом?Почему кнопка не идет прямо в этой строке таблицы?

<TableLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
        <TableRow>
            <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/str1"
                    />
            <EditText
                    android:id="@+id/id1"
                    android:layout_width="70dp"
                    android:layout_height="wrap_content"
                    />
            <Button
                    android:id="@+id/id2"
                    android:layout_width="wrap_content"
                    android:layout_height="65dp"
                    android:text="@string/str2"
                    android:gravity="right"/>
        </TableRow>
</TableLayout>

Ответы [ 2 ]

4 голосов
/ 07 июня 2011

Вы должны либо использовать android: stretchColumns = "1" в TableLayout, так что ваш EditText толкает вашу кнопку вправо.

Или вы можете использовать атрибут android: layout_weight для представлений в tableRow для соответствующего распределения пространства.

Кроме того, вам не нужно указывать атрибуты width и heightпросмотры в TableRow.

<TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:stretchColumns="1">
        <TableRow>
            <TextView
                android:text="@string/str1"
                />
            <EditText
                android:id="@+id/id1"
                 />
            <Button
                android:id="@+id/id2"
                android:text="@string/str2"
                />
        </TableRow>
    </TableLayout>
3 голосов
/ 07 июня 2011

android:gravity="right" используется для текста внутри Button.Поскольку его ширина установлена ​​на wrap_content, это никак не влияет.

Вам нужно использовать android:layout_gravity вместо этого.См .: http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html#attr_android:layout_gravity

Стандартная гравитационная постоянная, которую ребенок может предоставить своему родителю.Определяет, как поместить представление, как его оси x, так и оси y, в родительскую группу представлений.

Должно быть одним или несколькими (разделенными '|') из следующих постоянных значений.

(...)

right 0x05 Нажмите объект справа от его контейнера, не меняя его размера.

...