有没有办法在Android的导航抽屉视图中禁用背景视图的暗淡化效果?
如何使抽屉布局位于操作栏/工具栏下方?我正在使用v7:21 app compat库和新的ToolBar视图.
我看到的例子看起来像
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- drawer view -->
<LinearLayout
android:layout_width="304dp"
android:layout_height="match_parent"
android:layout_gravity="left|start">
<!-- drawer content -->
</LinearLayout>
<!-- normal content view -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- The toolbar -->
<android.support.v7.widget.Toolbar
android:id="@+id/my_awesome_toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
<!-- The rest of content view -->
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
但随后工具栏将被抽屉隐藏,这使得动画汉堡图标(如v7.ActionBarDrawerToggle)无用,因为它在抽屉下方不可见,但我确实想使用新的ToolBar视图来更好地支持Material主题.
那么如何实现呢?是否可以将DrawerLayout作为非顶级视图?
android toolbar android-support-library navigation-drawer drawerlayout
我正在开发一个使用导航抽屉图案的应用程序(使用DrawerLayout).
每次单击抽屉的项目,都会替换主容器中的片段.
但是,我不确定何时是进行片段交易的合适时机?抽屉开始关闭时?或者关闭后?
在google的documentaion示例中,您可以看到他们在项目单击后立即执行事务,然后关闭抽屉.
结果,抽屉看起来很迟钝而且不平滑,看起来非常糟糕(它也发生在我的应用中).
在Gmail和Google云端硬盘应用程序中,另一方面,它似乎是在抽屉关闭后进行交易(我是对吗?).
结果,抽屉没有延迟且非常平滑,但至少需要大约1秒钟(抽屉关闭所需的时间)才能看到下一个片段.
在立即进行片段交易时,似乎抽屉没有办法顺畅.
你觉得怎么样?
提前致谢!
android android-fragments fragmenttransaction navigation-drawer drawerlayout
我有一个活动,其contentView是a的一个实例DrawerLayout,它有一个带有抽屉指示器的导航抽屉,显示在操作栏中.该活动包含一个Fragment,让我们调用它ListFragment,其中包含一个选项列表.单击选项时,我将替换为ListFragmenta DetailFragment.

此时,我想显示一个"向上"导航选项而不是导航抽屉指示器.如果我通过调用禁用抽屉指示器,我可以显示"向上"图标mDrawerToggle.setDrawerIndicatorEnabled(false),但这只会删除抽屉图标 - 它不会删除功能 - 也就是说,当我点击插入符号时,导航抽屉是仍然开放.
此外,在这些子视图中,我想通过从屏幕边缘拖动来禁用抽屉的打开.我试过通过调用尝试这样做,setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)但它似乎没有禁用此功能.
我已经尝试扩展ActionBarDrawerToggle类以防止在单击指示器时打开抽屉 - 但是,所有发生的情况是执行覆盖操作("向上"导航),但抽屉仍然打开.
我还在使用片段时实现了在Android导航抽屉图像和向上插入符之间切换的步骤.它可以显示插入符号,但是尽管覆盖了向上按钮功能,菜单仍会打开(应用程序确实会导航回来 - 它也会打开抽屉).
所以,长话短说:当我的布局根是DrawerLayout:时,有没有(最好是干净和优雅,但此时我会用hacky)方式实现这些东西:
mDrawerToggle.setDrawerIndicatorEnabled(false))好吧,看起来如果我都覆盖了ActionBarDrawerToggleAND onOptionsItemSelected,当我点击插入符号时菜单没有打开.但是如果我从边缘拖动它仍然会打开.救命!
是否可以在Android中使用导航抽屉,但不是更新片段,我想在应用程序中切换活动作为我的导航方式.
我使用工具栏代替操作栏,我也使用导航抽屉.我的工具栏颜色是黑色,我希望我的导航抽屉指示灯颜色为白色.那么如何更改导航抽屉指示灯的颜色或放置自定义v7中的导航指示器.任何人都可以帮帮我吗?
我正在使用新的DrawerLayout侧面导航.我正在使用这样的抽屉图标('汉堡包'):
@Override
protected void onStart() {
super.onStart();
mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_main_drawerlayout);
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.drawable.ic_navigation_drawer,
R.string.app_name,
R.string.app_name);
mDrawerLayout.setDrawerListener(mDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
但是,当我Fragment向backstack 添加一个时,我想再次显示后退箭头,这样用户就可以导航回"home",然后才打开app抽屉.
如何将抽屉图标重置为后退图标?
我想要的箭头:

IntelliJ在Android Studio中对Navigation Drawer模板Activity进行了更改,Activity类中的代码行更少.新的Activity类如下所示:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public void onBackPressed() {
DrawerLayout …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用NavigationView来实现NavigationDrawer.我通过在菜单中设置组ID添加了分隔符.但是我看不到分隔符.我想这是因为分隔符颜色与背景相同.所以我想改变分隔符颜色.但我发现无法改变它.谁能帮我?
在屏幕截图中,似乎有一个空间用于History和之间的分隔符Settings,但你看不到它.

activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:fitsSystemWindows="true"
tools:context=".ui.MapActivity">
<LinearLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar_actionbar" />
<!--main content-->
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/navdrawer_background"
app:insetForeground="#4000"
app:itemTextColor="@color/navdrawer_item_text_color"
app:itemIconTint="@color/navdrawer_item_icon_tint"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
drawer.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:id="@+id/group_feature"
android:checkableBehavior="single">
<item android:id="@+id/navdrawer_item_map"
android:checked="true"
android:icon="@drawable/ic_drawer_map"
android:title="@string/navdrawer_item_map"/>
<item android:id="@+id/navdrawer_item_favourite"
android:icon="@drawable/ic_drawer_fav"
android:title="@string/navdrawer_item_fav"/>
<item android:id="@+id/navdrawer_item_history"
android:icon="@drawable/ic_drawer_history"
android:title="@string/navdrawer_item_history"/>
</group>
<group android:id="@+id/group_settings"
android:checkableBehavior="single">
<item android:id="@+id/navdrawer_item_settings"
android:icon="@drawable/ic_drawer_settings"
android:title="@string/navdrawer_item_settings"/>
<item android:id="@+id/navdrawer_item_help"
android:icon="@drawable/ic_drawer_help"
android:title="@string/navdrawer_item_help"/>
<item android:id="@+id/navdrawer_item_about"
android:icon="@drawable/ic_drawer_about"
android:title="@string/navdrawer_item_about"/> …Run Code Online (Sandbox Code Playgroud) android navigation-drawer navigationview android-navigationview
我有以下问题:
我知道如何设置工具栏来显示后退按钮图标而不是汉堡按钮图标.
由此:

对此:
使用: getSupportActionBar().setDisplayHomeAsUpEnabled(true);
现在,我想做反向动作,我想从后退按钮图标转到汉堡图标:
到这里:
我怎样才能做到这一点?
更新:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
private void enableViews(boolean enable) {
if(enable) {
// Enables back button icon
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
// TODO: Enables burger icon
}
}
Run Code Online (Sandbox Code Playgroud) android back-button android-actionbar navigation-drawer android-toolbar