我想从反应本机抽屉项目中删除左右空格..我该怎么做?我已经尝试过以下代码,但不起作用:
<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)
抽屉导航位置右侧会产生奇怪的行为。 这是当位置设置为右侧时抽屉的行为
我不确定它为什么会出现这种行为,因为它应该像默认的左侧一样工作。这是我的代码
<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
我正在尝试在 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) 通常,当按下内容区域时DrawerLayout,抽屉将关闭并且触摸被消耗.有没有办法防止这种情况并将触摸事件传递到内容区域?
谢谢!
我正在寻找一种在我的导航抽屉中找到默认片段的方法,这不是第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) 堆栈跟踪:
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) 您好我在我的应用程序中创建导航抽屉.现在我有问题如何以编程方式更改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) 我正在尝试使我的导航抽屉平稳运行,因为在打开和关闭抽屉时会出现卡顿/延迟。我希望这能完美运行。有什么帮助吗?
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) 我已经取得的成就-从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) 我用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),并能够将项目放在顶部,但灰色边框仍然存在.