Android:更改操作栏高度后,导航指示器(图标)不垂直居中
Posted
技术标签:
【中文标题】Android:更改操作栏高度后,导航指示器(图标)不垂直居中【英文标题】:Android: After changing action bar height, the navigation indicator(icon) not centered vertical 【发布时间】:2015-05-20 17:54:37 【问题描述】:我用 Navigation Drawer 编写了一个 android 应用(使用 android.support.v4.widget.DrawerLayout 和 android.support.v4.app.ActionBarDrawerToggle)
这是带有自定义导航指示器(图标)的屏幕截图,它是垂直居中的。
更改操作栏高度后,导航指示器(图标)未垂直居中。
我在 style.xml 中更改操作栏高度
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:actionBarStyle">@style/CustomActionBar</item>
<item name="actionBarStyle">@style/CustomActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="CustomActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@drawable/actionbar_bar</item>
<item name="android:height">@dimen/action_bar_height</item>
<item name="android:actionBarSize">@dimen/action_bar_height</item>
<!-- Support library compatibility -->
<item name="background">@drawable/actionbar_bar</item>
<item name="height">@dimen/action_bar_height</item>
<item name="actionBarSize">@dimen/action_bar_height</item>
</style>
如何将导航指示器(图标)置于垂直居中。
已编辑:
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dashboard_logged_in);
mContext = this;
final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME);
actionBar.setCustomView(R.layout.layout_actionbar_login);
initView();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
private void initView()
// DrawerLayout
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerToggle = createDrawerToggle();
mDrawerLayout.setDrawerListener(mDrawerToggle);
// ListView
mDrawerListView = (ListView) findViewById(R.id.left_drawer);
mDrawerAdapter = new DrawerAdapter(this, R.layout.drawer_item_layout, mDrawerList);
mDrawerListView.setAdapter(mDrawerAdapter);
mDrawerListView.setOnItemClickListener(new DrawerItemClickListener());
private ActionBarDrawerToggle createDrawerToggle()
ActionBarDrawerToggle drawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.light_menu_r, R.string.drawer_open, R.string.drawer_close)
@Override
public void onDrawerOpened(View drawerView)
super.onDrawerOpened(drawerView);
//invalidateOptionsMenu();
super.onDrawerSlide(drawerView, 0);
getDrawerToggleDelegate().setActionBarUpIndicator(mContext.getResources().getDrawable(R.drawable.dark_menu_r), R.string.settings);
@Override
public void onDrawerClosed(View drawerView)
super.onDrawerClosed(drawerView);
//invalidateOptionsMenu();
Log.d("Eric Eric", "hahaha");
getDrawerToggleDelegate().setActionBarUpIndicator(mContext.getResources().getDrawable(R.drawable.light_menu_r), R.string.coupon_list);
@Override
public void onDrawerSlide(View drawerView, float slideOffset)
super.onDrawerSlide(drawerView, 0);
;
return drawerToggle;
谢谢。 埃里克
【问题讨论】:
嘿,你有没有找到解决方案?我遇到了同样的问题。 【参考方案1】:您的应用主题是“Theme.AppCompat.Light.DarkActionBar”,而您的小部件主题是“Widget.AppCompat.Light.ActionBar.Solid.Inverse”这就是发生这种错位的原因。
【讨论】:
不,绝对不是【参考方案2】:老话题,但我最近遇到了这个问题。经过数小时试图弄清楚这是工具栏、操作栏、actionbardrawertoggle 还是指示器可绘制本身的问题,结果发现解决方案非常简单。
您只需按照 Google 开发者控制台中的说明在工具栏中指定一个最小高度。 (http://developer.android.com/reference/android/widget/Toolbar.html)
解决方案:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_
android:layout_
android:minHeight="@dimen/toolbar_height" ... />
【讨论】:
以上是关于Android:更改操作栏高度后,导航指示器(图标)不垂直居中的主要内容,如果未能解决你的问题,请参考以下文章