Размер 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 папка ресурса, в зависимости от того, сколько нужно изменить.

Другие вопросы по тегам