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