我想在我的应用程序中创建一个工具栏,我想知道 android 中工具栏的标准高度是多少?
我希望它足够大,可以容纳一根手指,但不要太大。有标准尺寸吗?
我想在我的应用程序中创建一个工具栏,我想知道 android 中工具栏的标准高度是多少?
我希望它足够大,可以容纳一根手指,但不要太大。有标准尺寸吗?
可触摸元素的建议最小尺寸为 48 dp,有关更详细的指标,请参阅此页面。
除了@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());
}
您可以使用 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>
您可以使用以下方法以编程方式获取 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;
}
对于手机和平板电脑56dp
等大型设备,您可能有更多空间64dp
这是我的 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
}