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