Android - стандартная высота панели инструментов

83

Я хочу создать панель инструментов в своем приложении, и мне интересно, какова стандартная высота панели инструментов в Android?

Я хочу, чтобы он был достаточно большим для пальца, но не огромным. Есть стандартный размер?

нрофис
источник

Ответы:

204

Лучше всего использовать, ?attr/actionBarSizeкак прокомментировал @Jaison Brooks.

В руководстве по материалам рекомендованная высота составляет 56dp:

Панель инструментов: 56dp

ведант
источник
9
теперь это '? android attr / actionBarSize'
Sattar
35

Рекомендуемый минимальный размер сенсорных элементов - 48 dp, более подробные показатели см. На этой странице .

Молнарм
источник
40
@nrofis Я предлагаю установить следующее в xml панели инструментов android:minHeight="?attr/actionBarSize".
Джейсон Брукс
2
не должно ли оно быть меньше в ландшафтном режиме
Zapnologica
6

В дополнение к ответу @ vedant1811 вы можете программно получить actionBarSizeиз attrs:

TypedValue tv = new TypedValue();
if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
    actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
}
перешивать
источник
2

Вы можете использовать следующий метод, чтобы программно получить высоту AppBar

private static final int DEFAULT_TOOLBAR_HEIGHT = 56;

private static int toolBarHeight = -1;

public static int getToolBarHeight(Context context) {
        if (toolBarHeight > 0) {
            return toolBarHeight;
        }
        final Resources resources = context.getResources();
        final int resourceId = resources.getIdentifier("action_bar_size", "dimen", "android");
        toolBarHeight = resourceId > 0 ?
                resources.getDimensionPixelSize(resourceId) :
                (int) convertDpToPixel(DEFAULT_TOOLBAR_HEIGHT);
        return toolBarHeight;
    }

public static float convertDpToPixel(Context context, float dp) {
    float scale = context.getResources().getDisplayMetrics().density;
    return dp * scale + 0.5f;
}
guy.gc
источник
2

Для телефонов это так, 56dpа для больших устройств, таких как планшеты, на которых у вас больше места, это может быть64dp

Махди-Мальв
источник
1

вы можете использовать виджет панели инструментов, который уже существует в Android, и указать высоту wrap_content, так что будет лучше получить размер по умолчанию, который идет с ним.

Вот

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:background="@color/dark_cerulean">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingEnd="16dp"
        android:paddingStart="16dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="end"
        android:gravity="end"
        android:layout_marginEnd="16dp"
        android:textColor="@color/white"
        android:id="@+id/toolbar_title" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/image1"
            android:id="@+id/image"/>

    </LinearLayout>


</android.support.v7.widget.Toolbar>
Рух Аль-Махаба
источник