Ich möchte eine Symbolleiste in meiner App erstellen und frage mich, wie hoch die Standardhöhe für die Symbolleiste in Android ist.
Ich möchte, dass es groß genug für einen Finger ist, aber nicht groß. Gibt es Standardgröße?
Antworten:
Es ist am besten zu verwenden, ?attr/actionBarSize
wie @Jaison Brooks kommentierte.
In den Materialrichtlinien wird eine Höhe von 56 dp empfohlen:
Symbolleiste: 56dp
Die empfohlene Mindestgröße für berührbare Elemente beträgt 48 dp. Weitere Informationen finden Sie auf dieser Seite .
android:minHeight="?attr/actionBarSize"
.
Zusätzlich zur Antwort @ vedant1811 können Sie programmgesteuert actionBarSize
von attrs abrufen:
TypedValue tv = new TypedValue();
if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
{
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
}
Mit der folgenden Methode können Sie die AppBar-Höhe programmgesteuert abrufen
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;
}
Für Telefone ist es 56dp
und für große Geräte wie Tablets, für die Sie mehr Platz haben könnten64dp
Sie können das Symbolleisten-Widget verwenden, das bereits in Android vorhanden ist, und die Höhe wrap_content eingeben, damit Sie die mitgelieferte Standardgröße 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="@drawable/image1"
android:id="@+id/image"/>
</LinearLayout>
</android.support.v7.widget.Toolbar>