Android – Standardhöhe der Symbolleiste

Lesezeit: 3 Minuten

Benutzer-Avatar
nrofis

Ich möchte eine Symbolleiste in meiner App erstellen und frage mich, was die Standardhöhe für die Symbolleiste in Android ist.

Ich möchte, dass es groß genug für einen Finger ist, aber nicht riesig. Gibt es eine Standardgröße?

Benutzer-Avatar
Vedant Agarwala

Es ist am besten zu verwenden ?attr/actionBarSize wie @Jaison Brooks kommentierte.

In dem Materialrichtlinienempfohlene Höhe ist 56dp:

Werkzeugleiste: 56dp

  • es ist jetzt ‘?android attr/actionBarSize’

    – Sattar

    3. Juli 2018 um 22:38 Uhr


  • Dazwischen gibt es keinen Abstand. es ist ?android:attr/actionBarSize

    – nuynait

    30. April 2021 um 13:43 Uhr

Die empfohlene Mindestgröße für berührbare Elemente beträgt 48 dp, siehe diese Seite für detailliertere Metriken.

  • @nrofis Ich würde vorschlagen, Folgendes in der XML-Datei der Symbolleiste einzustellen android:minHeight="?attr/actionBarSize".

    – Jaison Brooks

    28. Oktober 2014 um 20:13 Uhr


  • sollte es im Querformat nicht kleiner sein

    – Zapnologica

    16. Juli 2015 um 9:32 Uhr


Zusätzlich zur Antwort von @vedant1811 können Sie programmgesteuert abrufen actionBarSize von attrs:

TypedValue tv = new TypedValue();
if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
    actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
}

Sie können die folgende Methode verwenden, um die AppBar-Höhe programmgesteuert abzurufen

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;
}

Sie können das bereits in Android vorhandene Symbolleisten-Widget verwenden und die Höhe wrap_content eingeben, sodass es besser ist, die damit gelieferte Standardgröße zu erhalten.

hier

<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="https://stackoverflow.com/questions/12988011/@drawable/image1"
            android:id="@+id/image"/>

    </LinearLayout>


</android.support.v7.widget.Toolbar>

  • Im Gegensatz zu anderen Antworten ist diese die beste. Das Umbrechen von Inhalten ist viel besser als das Hartcodieren einer bestimmten numerischen Größe, abhängig vom Telefontyp.

    – Liker777

    2. März 2021 um 4:36 Uhr

Benutzer-Avatar
Mahdi-Malv

Zum Telefone es ist 56dp und für große Geräte wie Tablets das Sie mehr Leerzeichen haben könnte es sein 64dp

  • Im Gegensatz zu anderen Antworten ist diese die beste. Das Umbrechen von Inhalten ist viel besser als das Hartcodieren einer bestimmten numerischen Größe, abhängig vom Telefontyp.

    – Liker777

    2. März 2021 um 4:36 Uhr

Benutzer-Avatar
Schwedkow Iwan

Hier ist meine Kotlin-Lösung

fun getActionBarHeight(activity: Activity): Int {
        val typedValue = TypedValue()
        if (activity.theme.resolveAttribute(
                android.R.attr.actionBarSize,
                typedValue,
                true
            )
        ) return TypedValue.complexToDimensionPixelSize(
            typedValue.data,
            activity.resources.displayMetrics
        )
        return 0
    }

1313220cookie-checkAndroid – Standardhöhe der Symbolleiste

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy