96

我想在我的应用程序中创建一个工具栏,我想知道 android 中工具栏的标准高度是多少?

我希望它足够大,可以容纳一根手指,但不要太大。有标准尺寸吗?

4

7 回答 7

226

最好使用?attr/actionBarSize@Jaison Brooks 评论。

材料指南中,建议高度为 56dp:

工具栏:56dp

于 2016-03-30T17:13:46.453 回答
35

可触摸元素的建议最小尺寸为 48 dp,有关更详细的指标,请参阅此页面

于 2012-10-20T12:54:36.997 回答
8

除了@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());
}
于 2018-05-14T15:07:47.570 回答
3

您可以使用 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>
于 2018-07-09T10:58:10.437 回答
3

您可以使用以下方法以编程方式获取 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;
}
于 2017-07-19T14:29:58.927 回答
2

对于手机和平板电脑56dp等大型设备,您可能有更多空间64dp

于 2017-08-18T21:28:47.253 回答
0

这是我的 Kotlin 解决方案

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
    }
于 2021-08-30T10:49:44.580 回答