我在这里写的是关于我们从 AppCompat 库迁移到 AndroidX 库时引入的一个问题。在此过程中,当以下问题开始时,我们从 切换android.support.design.widget.NavigationView到 and that\xe2\x80\x99s。com.google.android.material.navigation.NavigationView
在我们的NavigationView设计中,为了节省空间,我们实现了一个可展开的菜单,这样当用户点击\xe2\x80\x9cmore\xe2\x80\x9d按钮时,菜单就会展开以显示更多选项。一开始只有一些选项可见,其余选项不可见,如下所示;
\n\n单击 \xe2\x80\x9cMore...\xe2\x80\x9d 按钮后,菜单将扩展为;
\n\n为此,我们使用以下代码;
\n\n@Override\npublic boolean onNavigationItemSelected(MenuItem item)\n{\n ....\n if (item.getItemId() == R.id.nav_more)\n {\n item.setVisible(false); // hide the \xe2\x80\x9cMore\xe2\x80\x9d item\n getMenu().findItem(R.id.nav_option_3).setVisible(true);\n getMenu().findItem(R.id.nav_option_4).setVisible(true);\n getMenu().findItem(R.id.nav_option_5).setVisible(true);\n getMenu().findItem(R.id.nav_option_6).setVisible(true);\n return true;\n }\n .......\n return false;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n好吧,这段代码在过去是有效的,但是当我们迁移到使用 androidx 库时,噗,它停止工作了。嗯,确实起到了一点作用。\xe2\x80\x9c更多...\xe2\x80\x9d 按钮被隐藏,但之前隐藏的选项没有显示。\n因为,我花了很多小时才解决这个问题,并避免其他人头痛,我会解释一下问题和解决方案。
\n\n在这种情况下要做的第一件事就是查看源代码。由于代码是开源的,我可以在 github …
android navigation-drawer android-navigation android-navigationview
请帮帮我。
简介:我使用导航组件,单活动模式,通过底部导航菜单切换 3 个片段。我还有抽屉导航。
所有片段都处于同一级别(都是根目录,直接从bottm nav访问)
事情应该是这样的:对于所有片段,必须有一个带有抽屉图标的工具栏。
问题:当应用程序启动时,主页片段显示抽屉的标准汉堡包图标,这是可以的。但是当我切换到任何其他片段时,抽屉图标变成箭头图标。此外,当按下该箭头时,抽屉从左侧滑动。这意味着它仍然可以作为显示抽屉菜单的按钮,但只是图标发生了变化。
问题:从底部导航菜单切换到另一个片段时,如何禁用汉堡图标转换为箭头图标?
文件:导航图:
<navigation 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:id="@+id/nav_graph"
app:startDestination="@id/bottom_nav_proposals"
>
<fragment
android:id="@id/bottom_nav_proposals"
android:name="com.base.ProposalsContainerFragment"
android:label="fragment_proposals"
tools:layout="@layout/fragment_proposals" />
<fragment
android:id="@id/bottom_nav_vehicles"
android:name="com.base..DriversVehiclesFragment"
android:label="Vehicles" >
</fragment>
<fragment
android:id="@id/bottom_nav_drivers"
android:name="com.bijov1apps.base.carrier.root.drivers.DriversVehiclesFragment"
android:label="Drivers" >
</fragment>
</navigation>
Run Code Online (Sandbox Code Playgroud)
活动:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//initializing Navigation COmponent
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_carrier_root) as NavHostFragment
val navController = navHostFragment.navController
//setting up toobar stuff
val toolbar: Toolbar = findViewById(R.id.toolbar_root)
toolbar.setupWithNavController(navController, drawerLayout)
//setting up navigation drawer stuff
val …Run Code Online (Sandbox Code Playgroud) android kotlin navigation-drawer hamburger-menu android-navigation-graph
我的活动中有三个顶级目标片段:
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.trackerFragment,
R.id.nutrientFragment,
R.id.settingsFragment
),
drawerLayout
)
Run Code Online (Sandbox Code Playgroud)
这意味着所有这些片段将显示汉堡按钮而不是正常的后退箭头。问题是我的应用程序中有一个“转到 Nutrient”按钮,可以导航到 NutrientFragment,这是顶级目的地。我希望这个片段在使用抽屉导航时仍然显示汉堡包图标,但在通过“转到营养物”按钮导航时显示正常的后退/向上按钮。
我最初的想法是在导航到 时传递一个布尔值作为参数NutrientFragment,并在内部onCreateView()根据布尔值,删除汉堡包图标或添加后退按钮。但这似乎有点丑陋且效率低下,特别是如果将来我添加更多可能存在相同问题的目的地。我也不知道如何“删除汉堡包图标并替换为正常的后退按钮”。关于如何实施有什么想法吗?我找到的所有答案要么是旧的已弃用的java代码,要么不完全是我正在寻找的。
谢谢。
android kotlin navigation-drawer android-navigation android-architecture-components
这是我的 app.js 代码
import React from 'react';
import {
SafeAreaView,
ScrollView,
StatusBar,
StyleSheet,
Text,
useColorScheme,
View,
} from 'react-native';
import { createDrawerNavigator } from '@react-navigation/drawer';
import { NavigationContainer } from '@react-navigation/native';
import Home from './src/components/Home';
import Login from './src/components/Login';
const Drawer = createDrawerNavigator();
function App() {
return(
<NavigationContainer>
<Drawer.Navigator>
<Drawer.Screen name="Home" component={Home} />
<Drawer.Screen name="Login" component={Login} />
</Drawer.Navigator>
</NavigationContainer>
)
}
export default App;
Run Code Online (Sandbox Code Playgroud)
这是我的依赖包
"dependencies": {
"@react-navigation/bottom-tabs": "^6.2.0",
"@react-navigation/drawer": "^6.3.1",
"@react-navigation/native": "^6.0.8",
"@react-navigation/native-stack": "^6.5.1",
"react": "17.0.2",
"react-native": "^0.65.0",
"react-native-gesture-handler": …Run Code Online (Sandbox Code Playgroud) 我想实现类似于pirate Bay使用的节标题
基本上是这样的Listview:
标题名称列表项目列表项目列表项目列表项目标题名称列表项目列表项目列表项目
这是实现这一目标的最佳方式?我已阅读部分标题和合并适配器,但它们不能满足我的需求......我将如何实现节标题
我想从右侧打开抽屉,但是当它打开时它可以工作但是当我点击动作栏中的切换按钮时它强制关闭并给出错误" 没有抽屉视图发现重力LEFT "
请帮忙...
我添加布局像
<ListView
android:layout_gravity="right|end"
android:id="@+id/left_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:divider="#ccc"
android:dividerHeight="1dp"
/>
Run Code Online (Sandbox Code Playgroud)
错误:
java.lang.IllegalArgumentException: No drawer view found with gravity LEFT
at android.support.v4.widget.DrawerLayout.openDrawer(DrawerLayout.java:1319)
at android.support.v7.app.ActionBarDrawerToggle.toggle(ActionBarDrawerToggle.java:290)
at android.support.v7.app.ActionBarDrawerToggle.access$100(ActionBarDrawerToggle.java:64)
at android.support.v7.app.ActionBarDrawerToggle$1.onClick(ActionBarDrawerToggle.java:200)
at android.view.View.performClick(View.java:4084)
at android.view.View$PerformClick.run(View.java:16966)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud) 当我尝试为导航抽屉项实现onClick时,我收到了ClassCastException。
请在下面找到代码。
我无法弄清楚哪里出了问题
主要活动:
public class MainActivity extends AppCompatActivity implements FragmentDrawer.FragmentDrawerListener {
Toolbar toolbar;
ViewPager pager;
ViewPagerAdapter adapter;
SlidingTabLayout tabs;
CharSequence Titles[] = {"CITY", "GO", "NEAR"};
int Numboftabs = 3;
private FragmentDrawer drawerFragment;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Creating The Toolbar and setting it as the Toolbar for the activity
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
// Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs.
adapter = …Run Code Online (Sandbox Code Playgroud) 我NavigationView成功地设置了一个抽屉,并且很容易实现.但是,我需要我的标题图像,这是LinearLayout我通过的一部分,因为app:headerLayout点击时动画,我无法实现这一点.我需要你的帮助.
这是我的activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<!-- This DrawerLayout has two children at the root -->
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- This LinearLayout represents the contents of the screen -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!-- The ActionBar displayed at the top -->
<include
layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<!-- The main content view where fragments are loaded -->
<FrameLayout
android:id="@+id/flContent"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<!-- The navigation drawer that comes from the left --> …Run Code Online (Sandbox Code Playgroud) 我想在导航抽屉中设置标题。在我的应用程序中,我创建了一个导航抽屉,它可以正常工作,但是当我尝试设置标题时,标题名称未显示在标题栏中,不知道为什么?
我尝试了许多教程,但是都没有用,不知道错误在哪里。
我在其他活动中尝试过这种方式:-
getActivity().setTitle("Home");
Run Code Online (Sandbox Code Playgroud)
但不起作用..在这里,我发布了完整的代码:-
public class MainActivity extends AppCompatActivity {
DrawerLayout mDrawerLayout;
NavigationView mNavigationView;
FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;
SessionManager session;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//will hide the title not the title bar
setContentView(R.layout.activity_main);
session = new SessionManager(getApplicationContext());
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mNavigationView = (NavigationView) findViewById(R.id.shitstuff);
//*//**
// * Lets inflate the very first fragment
// * Here , we are inflating the TabFragment as the first Fragment
// *//*
//Intent intent = new Intent(getApplicationContext(),MainActivity.class);
//startActivity(intent);
mFragmentManager …Run Code Online (Sandbox Code Playgroud) 我用这种方式制作一个导航抽屉并在我的活动中展示它.然后我添加了一个Toolbar到我的基础布局.在这些步骤之后,我尝试这种方式在我的活动上显示三个点.(我在我的基本布局及其类中进行了所有更改).
然后我看到我的活动没有变化.我想我应该用另一种方法在基本活动中添加三个点.我该怎么办?
app_base_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:local="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:layoutDirection="rtl"
tools:openDrawer="right">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<TextView
android:id="@+id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@android:color/white"
android:textSize="20sp"/>
</android.support.v7.widget.Toolbar>
<FrameLayout
android:id="@+id/view_stub"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="?attr/actionBarSize"/>
</FrameLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="@dimen/nav_header_width"
android:layout_height="match_parent"
android:layout_gravity="right"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
AppBaseActivity.java大多是这样的(只有很小的变化).
android android-menu android-activity navigation-drawer android-toolbar
android ×9
kotlin ×2
android-architecture-components ×1
android-menu ×1
fragment ×1
mobile ×1
react-native ×1
slidingmenu ×1