我用导航抽屉写一个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;
}
感谢。 埃里克
答案 0 :(得分:0)
您的应用主题是&#34; Theme.AppCompat.Light.DarkActionBar&#34;你的小部件主题是&#34; Widget.AppCompat.Light.ActionBar.Solid.Inverse&#34;这就是为什么会出现这种错位的原因。
答案 1 :(得分:0)
旧主题,但我最近遇到了这个问题。经过几个小时的尝试来判断这是否是工具栏,动作栏,动作标记或指示器本身的问题,结果证明解决方案非常简单。
您只需在工具栏中指定最小高度,如Google开发者控制台中所述。 (http://developer.android.com/reference/android/widget/Toolbar.html)
解决方案:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbar_height"
android:minHeight="@dimen/toolbar_height" ... />