Размер ImageButton на разных экранах
У меня есть экран с 4 ImageButton в сетке 2x2 (с помощью TableLayout).
Мне нужно оказать поддержку всем разным размерам экрана. Итак, я создал 4 папки с макетом (маленький, средний, большой и очень большой).
Это работало хорошо для позиции ImageButton. Но на больших и сверхбольших экранах размер ImageButton слишком мал.
Я попытался решить эту проблему, используя 4 папки для разных плотностей (drawable-ldpi, drawable-mdpi, drawable-hdpi и drawable-xhdpi), используя отношения x0.75, x1, x1.5 и x2 между папками mdpi и другими,
Но я думаю, что это не работает или не является правильным способом решить эту проблему.
Это что правильный путь решен?
Я беспокоюсь о маленьком экране, но с высокой плотностью. Или средний экран с низкой плотностью. В этих случаях, может быть, не работает, верно?
Другая идея, которая у меня есть, заключается в том, чтобы принудительно установить размер ImageButton (мера в градусах) для каждого макета папки каждого размера. Это что лучший способ разрешен?
Я действительно потерял с этим. Я хочу применить лучшее / правильное решение.
Кто-нибудь может мне помочь?
Спасибо и извините за мой плохой английский
Обновить:
Это макет:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center_horizontal">
<TableRow
android:gravity="center"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_marginTop="60dip" >
<ImageButton
android:id="@+id/newCard_button"
android:layout_margin="10dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_new_card_button"/>
<ImageButton
android:id="@+id/showLastTicket_button"
android:layout_margin="10dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_show_last_ticket_button"/>
</TableRow>
<TableRow
android:gravity="center"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<ImageButton
android:id="@+id/cancelLastTransaction_button"
android:layout_margin="10dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_anulla_button"/>
<ImageButton
android:id="@+id/searchCustomer_button"
android:layout_margin="10dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_search_customer_button"/>
</TableRow>
</TableLayout>
2 ответа
Вы можете попытаться настроить значения ширины и высоты ImageButton в макете, указав точные значения, например 50dip, вместо переноса содержимого. Значение dip будет отображаться в разных размерах на разных экранах, поскольку dip означает независимые пиксели плотности.
Хорошо, так что я бы предложил для этого использовать относительно новые классификаторы sw600dp
а также sw720dp
(кратчайшая ширина: 600dp или 720dp) для определения больших размеров для этих экранов - это в основном планшеты 7"и 10". Вы можете определить конкретный dimen
переменная и имеет большее значение в values-sw600dp
папки ресурсов, или фактически создайте другой макет в целом layout-sw600dp
папка ресурса, в зависимости от того, сколько нужно изменить.