Android ImageViews не работает правильно при взвешивании - PullRequest
0 голосов
/ 26 июля 2011

Этот фрагмент XML будет правильно отображать кнопку, которая покрывает всю строку, а затем 2 кнопки, которые равномерно взвешиваются и занимают 50% пространства следующим образом:

__________________________
|________________________|
||       ButtonA        ||
||______________________||
|____________ ___________|
|| ButtonB  | | ButtonC ||
||__________| |_________||
|________________________|

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_height="fill_parent" android:layout_width="fill_parent">
<TableRow android:layout_height="fill_parent" android:layout_width="fill_parent"
 android:layout_weight="1">
    <Button android:id="@+id/b_a"
        android:layout_width="wrap_content" android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="Button A" />
</TableRow>
<TableRow android:layout_height="fill_parent" android:layout_width="fill_parent"
 android:layout_weight="1">
    <Button android:id="@+id/b_b"
        android:layout_width="wrap_content" android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="Button B" />
    <Button android:id="@+id/b_c"
        android:layout_width="wrap_content" android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="Button C" />
</TableRow>

Я хочу заменить кнопку A на ImageView, который будет растягиваться так же, как кнопка A в настоящее время. Однако при замене ButtonA на:

<ImageView android:id="@+id/img_a"
        android:layout_width="wrap_content" android:layout_height="fill_parent"
        android:layout_weight="1"
        android:src=@drawable/imagename />

Это влияет на взвешивание кнопок B и C, заставляя кнопку B покрывать большую часть экрана и делая C действительно раздавленным. Похоже, это связано с размерами изображения (я использовал 320x50).

__________________________
|________________________|
||       Image A        ||
||______________________||
|___________________ ____|
|| ButtonB          ||bC||
||__________________||__||
|________________________|

Как я могу вставить этот ImageView, не затрагивая остальные строки таблицы?

1 Ответ

0 голосов
/ 27 июля 2011

Я думаю, что вы слишком либеральны с использованием layout_weight. это больше опция, используемая для размещения нескольких элементов в макете, которые должны динамически изменяться в соответствии с размером экрана (как у вас с кнопками B и C). Я бы избавился от остальных ваших layout_weights, так как они по сути ничего не делают и могут иметь какое-то причудливое поведение. Кроме того, layout_weight - это отношение размера элемента к экрану, которое варьируется от 0 до 1. Обе кнопки B и C хотят, чтобы для них было выделено 100% горизонтального пространства. Таким образом, я полагаю, что ваша проблема в том, что кнопка B имеет более высокий приоритет, чем кнопка C. Попробуйте изменить свой layout_weight для этих 2 элементов на 0,5, таким образом, каждый из них желает 50% выделенного пространства. Дайте мне знать, как это работает для вас!

...