标签: navigation-drawer

如何从反应本机抽屉项目中删除填充或空间

我想从反应本机抽屉项目中删除左右空格..我该怎么做?我已经尝试过以下代码,但不起作用:

<Drawer.Navigator initialRouteName={Dashboard} screenOptions={{
                drawerActiveBackgroundColor: 'orange',
                drawerActiveTintColor: '#fff',
                drawerInactiveTintColor: '#000',
                headerShown: false,

                sceneContainerStyle: {
                    padding: 0,
                    margin: 0,
                },
                drawerStyle: {
                    padding: 0,
                    margin: 0,
                },
                drawerLabelStyle: {
                    fontSize: 15
                }
            }}>
                <Drawer.Screen options={{
                    margin: 0,
                    width: '100%'
                }} name="Dashboard" component={Dashboard} />

                <Drawer.Screen name="My Trips" component={Dashboard} />

                <Drawer.Screen name="Emergency Contacts" component={Dashboard} />

                <Drawer.Screen name="Saved Locations" component={Dashboard} />
            </Drawer.Navigator>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

navigation-drawer react-native

2
推荐指数
1
解决办法
2886
查看次数

抽屉导航位置右侧

抽屉导航位置右侧会产生奇怪的行为。 这是当位置设置为右侧时抽屉的行为

我不确定它为什么会出现这种行为,因为它应该像默认的左侧一样工作。这是我的代码

<NavigationContainer>
  <Drawer.Navigator screenOptions={{drawerPosition: 'right'}}>
     <Drawer.Screen name="Test" component={Test} />
  </Drawer.Navigator>
</NavigationContainer>
Run Code Online (Sandbox Code Playgroud)

环境

"@react-native-community/datetimepicker": "^5.1.0",
"@react-navigation/drawer": "^6.3.1",
"@react-navigation/native": "^6.0.8",
"@react-navigation/native-stack": "^6.5.0",
"moment": "^2.29.1",
"react": "17.0.2",
"react-native": "0.67.2",
"react-native-bootsplash": "^4.1.3",
"react-native-dropdown-picker": "^5.3.0",
"react-native-elements": "^3.4.2",
"react-native-gesture-handler": "^2.3.1",
"react-native-reanimated": "^2.4.1",
"react-native-safe-area-context": "^3.4.0",
"react-native-screens": "^3.11.1",
"react-native-svg": "^12.1.1",
"react-native-svg-transformer": "^1.0.0",
"react-native-vector-icons": "^9.1.0"
Run Code Online (Sandbox Code Playgroud)

请帮助我。谢谢

javascript navigation-drawer reactjs react-native react-navigation

2
推荐指数
1
解决办法
2427
查看次数

使用 Jetpack Compose 中的导航抽屉在可组合项之间导航

我正在尝试在 jetpack compose 中为抽屉图标/文本字段设置导航,但不确定如何正确执行。如何设置导航,以便每当我单击其中一个图标时,我都会导航到该可组合屏幕?这是目前我的MainDrawer 布局:


@Composable
fun MainDrawer() {

    val scaffoldState = rememberScaffoldState()
    val scope = rememberCoroutineScope()
    Scaffold(
        scaffoldState = scaffoldState,
        topBar = {
            AppBar(
                onNavigationIconClick = {
                    scope.launch {
                        scaffoldState.drawerState.isOpen
                    }
                }
            )
        },
        drawerContent = {
            DrawerHeader()
            DrawerBody(
                items = listOf(
                    MenuItem(

                        id = "item1",
                        title = "item1",
                        contentDescription = "Go to item1 screen",
                        icon = Icons.Default.Home
                    ),
                    MenuItem(
                        id = "item2",
                        title = "item2",
                        contentDescription = "Go to item2 screen",
                        icon = Icons.Default.Settings
                    ),
                    MenuItem(
                        id …
Run Code Online (Sandbox Code Playgroud)

android kotlin navigation-drawer android-jetpack-compose

2
推荐指数
1
解决办法
2361
查看次数

防止DrawerLayout处理内容区域中的触摸

通常,当按下内容区域时DrawerLayout,抽屉将关闭并且触摸被消耗.有没有办法防止这种情况并将触摸事件传递到内容区域?

谢谢!

android navigation-drawer drawerlayout

1
推荐指数
1
解决办法
2449
查看次数

如何在Android Studio导航抽屉中设置默认片段?

我正在寻找一种在我的导航抽屉中找到默认片段的方法,这不是第0项.我已经看到一些解决方案基于检查savedInstanceState是否为null但我觉得我没有访问权限这在我的onNavigationDrawerItemSelected方法中.这是我的班级:

public class Main extends ActionBarActivity
    implements NavigationDrawerFragment.NavigationDrawerCallbacks {

/**
 * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
 */
private NavigationDrawerFragment mNavigationDrawerFragment;

/**
 * Used to store the last screen title. For use in {@link #restoreActionBar()}.
 */
private CharSequence mTitle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mNavigationDrawerFragment = (NavigationDrawerFragment)
            getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
    mTitle = getTitle();

    // Set up the drawer.
    mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            (DrawerLayout) findViewById(R.id.drawer_layout));
}

@Override
public void onNavigationDrawerItemSelected(int position) {
    // update the Main content …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-studio navigation-drawer

1
推荐指数
1
解决办法
1万
查看次数

非法参数异常 - 必须使用MeasureSpec.EXACTLY测量DrawerLayout

堆栈跟踪:

09-10 07:56:56.448  24867-24867/? E/AndroidRuntime? FATAL EXCEPTION: main
    java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
            at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:814)
            at android.view.View.measure(View.java:15848)
            at com.android.internal.widget.ActionBarView.onMeasure(ActionBarView.java:1098)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at com.android.internal.widget.ActionBarContainer.onMeasure(ActionBarContainer.java:271)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
            at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1052)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:590)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
            at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:229)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5012)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189)
            at android.view.View.measure(View.java:15848)
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905)
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
            at android.view.Choreographer.doCallbacks(Choreographer.java:562)
            at android.view.Choreographer.doFrame(Choreographer.java:532)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at …
Run Code Online (Sandbox Code Playgroud)

android android-listview navigation-drawer

1
推荐指数
1
解决办法
6966
查看次数

以编程方式更改MenuItem Navigation Drawer Android的图标?

您好我在我的应用程序中创建导航抽屉.现在我有问题如何以编程方式更改MenuItem导航抽屉的每个图标?如果在Xml中菜单如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="none">
        <item
            android:id="@+id/nav_input_berita"
            android:icon="@drawable/ic_nav_input_berita"
            android:title="@string/input_berita" />
        <item
            android:id="@+id/nav_logout"
            android:icon="@drawable/ic_nav_logout"
            android:title="@string/logout" />
    </group>
</menu>
Run Code Online (Sandbox Code Playgroud)

和这样的活动:

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);

        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.setIc
        navigationView.setNavigationItemSelectedListener(this);
        setFragmentArtikel();
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer

1
推荐指数
1
解决办法
3633
查看次数

打开和关闭android时导航抽屉滞后

我正在尝试使我的导航抽屉平稳运行,因为在打开和关闭抽屉时会出现卡顿/延迟。我希望这能完美运行。有什么帮助吗?

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);

        final MediaPlayer mp = MediaPlayer.create(this, R.raw.firsteps);
        mp.start();


        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.setItemIconTintList(null);
        navigationView.setNavigationItemSelectedListener(this);


        FragmentManager fm = getSupportFragmentManager();
        fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit();

    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed(); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments navigation-drawer

1
推荐指数
2
解决办法
7310
查看次数

将获取的用户名放在导航抽屉活动中的导航头中

我已经取得的成就-从Facebook获取用户名并以不同的活动显示(运行良好)。
我正在做的事情却无法正常工作-我正在像下面这样进行导航抽屉活动,而该活动(或多或少)由android studio本身提供在此处输入图片说明

我希望你能注意到上面这张图片中有一个随机人的用户名,这个人已经在文本视图中硬编码了他的名字,我不想这样做,而是想在登录后从Facebook上获取它。我可以成功完成第二部分(从Facebook获取名称),我只是不知道如何分配,请告知是否有任何可行的方法。以下是nav_header.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="@dimen/nav_header_height"
    android:background="@drawable/side_nav_bar"
    android:gravity="bottom"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        android:src="@android:drawable/sym_def_app_icon" />

    <TextView
        android:id="@+id/manner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        android:text="ma"
        android:textColor="@color/black"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="android.studio@android.com" /></LinearLayout>
Run Code Online (Sandbox Code Playgroud)

方式是我要显示获取的用户名的ID,这是.java文件

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_testing2);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        ////////Code is used to fetch the user name////////////
        Bundle b = getIntent().getExtras();
        ////////Code is used to display the user name after fetchig it from other …
Run Code Online (Sandbox Code Playgroud)

java xml android navigation-drawer

1
推荐指数
1
解决办法
8157
查看次数

使用fitsSystemWindows时,NavigationView没有灰色边框

我用Android Studio 2.0创建了一个新的应用程序,我希望将我的导航抽屉放在下面Toolbar.我知道Material Design规格说它应该在它之上,Toolbar但我的抽屉里没有那么多条目,我想看看谷歌提供的整洁的图标动画.

我把它DrawerLayout放在顶层,以获得我想要的东西CoordinatorLayout.

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.company.app.MainActivity">

    <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="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:openDrawer="start">

        <include layout="@layout/content_main" />

        <android.support.design.widget.NavigationView
            android:id="@+id/nav_view"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            app:menu="@menu/activity_main_drawer" />

    </android.support.v4.widget.DrawerLayout>

</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

android:fitsSystemWindow="true"在顶级布局上使用,所以我可以着色状态栏.但是当我这样做时,导航抽屉确实有一个灰色的顶部边框.

在此输入图像描述

当我按照Google指定的方式(在工具栏上方)使用它时,边框会很好但这样看起来很丑陋.有什么办法可以删除吗?

我尝试重写NavigationView.onInsetsChanged(Rect rect),并能够将项目放在顶部,但灰色边框仍然存在.

android navigation-drawer material-design

1
推荐指数
1
解决办法
1089
查看次数