我希望在导航抽屉设置中显示ActionBarDrawerToggle中的动态汉堡包图标以及标题前的应用程序图标。像这样:
如果这个信息有用,我有一个抽象的基本抽屉活动,其他活动正在扩展,从导航菜单中获得每个屏幕的活动 - 主要是为了避免当viewpager进入时嵌套片段中遇到的所有问题
我尝试在工具栏中使用自定义视图,如下所示:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:theme="@style/AppTheme.AppBarOverlay">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:drawableLeft="@mipmap/ic_launcher"
android:drawablePadding="8dp"
android:drawableStart="@mipmap/ic_launcher"
android:gravity="center_vertical"
android:textColor="@android:color/white"
android:textSize="24sp" />
</android.support.v7.widget.Toolbar>
在我的DrawerLayout xml中。还尝试了ImageView,然后是TextView。也是负利润率。他们每个人都这样:
如何减少汉堡图标和应用图标之间的空间? 以下是我从每个儿童活动中打电话来创建的方法。
protected void inflateActivityViewInFrame(int layoutId, int titleStringId) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(layoutId, mFrameLayout, false);
mFrameLayout.addView(view);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
((TextView) toolbar.findViewById(R.id.title)).setText(titleStringId);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
public void onDrawerClosed(View view) {
supportInvalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
supportInvalidateOptionsMenu();
}
};
mDrawerToggle.setDrawerIndicatorEnabled(true);
mDrawerLayout.addDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
}
}
我也尝试了以下组合:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
app:theme="@style/AppTheme.AppBarOverlay">
</android.support.v7.widget.Toolbar>
在xml的DrawerLayout和以下代码中进行初始化:
protected void inflateActivityViewInFrame(int layoutId, int titleStringId) {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(layoutId, mFrameLayout, false);
mFrameLayout.addView(view);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayUseLogoEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
public void onDrawerClosed(View view) {
supportInvalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
supportInvalidateOptionsMenu();
}
};
mDrawerToggle.setDrawerIndicatorEnabled(true);
mDrawerLayout.addDrawerListener(mDrawerToggle);
mDrawerToggle.syncState();
}
toolbar.setTitle(titleStringId);
}
即使使用setDisplayUseLogoEnabled(true),也不会显示应用徽标。
我在这里做错了什么?如何以正确的间距显示菜单图标和应用徽标?