如何更改 Android 上小部件工具栏图标之间的 space 大小?
how to change space size between widget toolbar icons on Android?
我的应用程序上有一个带有 4 个图标的工具栏小部件,我想将这些图标之间的 space 大小更改为相同。
形成这样的:
current design
变成这样:
wanted design
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<item
android:id="@+id/action_home"
android:orderInCategory="100"
android:icon="@drawable/white_home"
android:title="@string/action_settings"
app:showAsAction="always" />
<item
android:id="@+id/action_profile"
android:orderInCategory="101"
android:icon="@drawable/white_profile"
android:title="@string/action_settings"
app:showAsAction="always" />
<item
android:id="@+id/action_inbox"
android:orderInCategory="102"
android:icon="@drawable/white_inbox"
android:title="@string/action_settings"
app:showAsAction="always" />
<item
android:id="@+id/action_contacts"
android:orderInCategory="103"
android:icon="@drawable/white_contacts"
android:title="@string/action_settings"
app:showAsAction="always" />
app_bar_main.xml
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_fab_plus"
app:backgroundTint="@color/colorPrimary" />
提前致谢。
这里 example 介绍了如何破解工具栏以在其中放置项目以填满其全部宽度。
要点是您需要声明您自己的工具栏的继承者,您将在其中重写 addView
方法:
@Override
public void addView(View child, ViewGroup.LayoutParams params) {
if (child instanceof ActionMenuView) {
params.width = LayoutParams.MATCH_PARENT;
}
super.addView(child, params);
}
已更新
如果您希望能够通过xml修改操作项之间的space并且不想扩展Toolbar.class
并且您还可以将工具栏用作操作栏(我看到您调用 setSupportActionBar()
) 然后 您 can chang 在 styles.xml
资源文件中使用您的应用程序主题:
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:actionButtonStyle">@style/MyActionButtonStyle</item>
</style>
<style name="MyActionButtonStyle" parent="AppBaseTheme">
<item name="android:minWidth">20dp</item>
<item name="android:padding">0dp</item>
</style>
我的应用程序上有一个带有 4 个图标的工具栏小部件,我想将这些图标之间的 space 大小更改为相同。
形成这样的: current design
变成这样: wanted design
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<item
android:id="@+id/action_home"
android:orderInCategory="100"
android:icon="@drawable/white_home"
android:title="@string/action_settings"
app:showAsAction="always" />
<item
android:id="@+id/action_profile"
android:orderInCategory="101"
android:icon="@drawable/white_profile"
android:title="@string/action_settings"
app:showAsAction="always" />
<item
android:id="@+id/action_inbox"
android:orderInCategory="102"
android:icon="@drawable/white_inbox"
android:title="@string/action_settings"
app:showAsAction="always" />
<item
android:id="@+id/action_contacts"
android:orderInCategory="103"
android:icon="@drawable/white_contacts"
android:title="@string/action_settings"
app:showAsAction="always" />
app_bar_main.xml
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@drawable/ic_fab_plus"
app:backgroundTint="@color/colorPrimary" />
提前致谢。
这里 example 介绍了如何破解工具栏以在其中放置项目以填满其全部宽度。
要点是您需要声明您自己的工具栏的继承者,您将在其中重写 addView
方法:
@Override
public void addView(View child, ViewGroup.LayoutParams params) {
if (child instanceof ActionMenuView) {
params.width = LayoutParams.MATCH_PARENT;
}
super.addView(child, params);
}
已更新
如果您希望能够通过xml修改操作项之间的space并且不想扩展Toolbar.class
并且您还可以将工具栏用作操作栏(我看到您调用 setSupportActionBar()
) 然后 您 can chang 在 styles.xml
资源文件中使用您的应用程序主题:
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:actionButtonStyle">@style/MyActionButtonStyle</item>
</style>
<style name="MyActionButtonStyle" parent="AppBaseTheme">
<item name="android:minWidth">20dp</item>
<item name="android:padding">0dp</item>
</style>