我对新的导航视图有几个问题.
1)滚动导航视图会滚动整个视图,但我只想让标题留在它的位置并滚动导航项.

2)要实现分频器黑白导航项目,我可以这样做:
<item
android:id="@+id/navigation_subheader"
android:title="@string/navigation_subheader">
<menu>
<item
android:id="@+id/navigation_sub_item_1"
android:icon="@drawable/ic_android"
android:title="@string/navigation_sub_item_1"/>
<item
android:id="@+id/navigation_sub_item_2"
android:icon="@drawable/ic_android"
android:title="@string/navigation_sub_item_2"/>
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
但如果没有副标题,它就不起作用.我试图给它一个空白字符串,但只留下一个垂直空格而不是副标题.我需要由分隔符分隔的导航项组,但没有子标题.
3)动态操作导航项.在此之前,我曾经使用垂直列表视图作为导航项.我只是将可见性设置为我不想要的任何导航项目.如何动态更改导航项?
android navigation-drawer android-design-library androiddesignsupport android-navigationview
我想开发一个即使使用 dpad 也能 100% 运行的应用程序,但不适用于电视设备,所以我不想依赖 Leanback 库。我已经遵循了这里的指南,以便集中我的 UI 的正确元素。
\n\n我正在使用支持设计库,但我的设计遇到了一些问题NavigationView:
这就是我正在做的处理焦点的事情:
\n\nprivate void initDrawer(){\n drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);\n navigationView = (NavigationView)findViewById(R.id.navigation_view);\n navigationView.setNavigationItemSelectedListener(this);\n drawerToggle = new ActionBarDrawerToggle(MainActivity.this, drawerLayout, R.string.app_name, R.string.app_name){\n @Override\n public void onDrawerOpened(View drawerView) {\n super.onDrawerOpened(drawerView);\n //This is not working properly\n navigationView.requestFocus();\n }\n\n @Override\n public void onDrawerClosed(View drawerView) {\n super.onDrawerClosed(drawerView);\n //This seems to work\n mContentLayout.requestFocus();\n }\n };\n drawerLayout.setDrawerListener(drawerToggle);\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这就是我正在做的使用硬件按钮切换抽屉打开/关闭的操作:
\n\n@Override\npublic boolean onKeyUp(int keyCode, KeyEvent event){\n if(keyCode==KeyEvent.KEYCODE_BUTTON_Y){\n …Run Code Online (Sandbox Code Playgroud) android android-support-library androiddesignsupport android-navigationview
我的活动NavigationView里面有一个DrawerLayout.
当用户点击NavigationView标题中的按钮时,我想滚动到顶部DrawerLayout/NavigationView带有动画.
看起来NavigationView和DrawerLayout没有提供获取实际滚动位置的方法(getScrollY()并且getScrollX()总是返回0),所以我不能这样做.
如何使用动画滚动到顶部?
<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"
android:fitsSystemWindows="true">
<!-- My content -->
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/navigation_view_header"
app:menu="@menu/my_navigation_items" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud) android scroll android-animation drawerlayout android-navigationview
我正在尝试NavigationDrawer在我的Android项目中实现补充工具栏.为此,我已经习惯NavigationView了DrawerLayout.要显示我使用菜单的项目.我想在添加的菜单项上添加click事件.
代码:在导航菜单中 -
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/nav_account" android:title="My Account"/>
<item android:id="@+id/nav_settings" android:title="Settings"/>
<item android:id="@+id/nav_layout" android:title="Log Out"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
在视图中:
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:menu="@menu/navigation_menu"
android:layout_gravity="start" />
Run Code Online (Sandbox Code Playgroud) android navigation-drawer android-navigationview material-components material-components-android
我在我的项目更新后AndroidX与targetSdkVersion设置为28,我的项目上崩溃从商店安装它的beta测试。
以下是我收到的错误日志:
2019-07-08 08:28:33.026 32011-32011/? E/AndroidRuntime: FATAL EXCEPTION: main Process: hu.itq.oakprotection, PID: 32011
java.lang.RuntimeException: Unable to start activity ComponentInfo{hu.itq.oakprotection/hu.itq.oakprotection.MainActivity}: android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class com.google.android.material.navigation.NavigationView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3194)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3302)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1891)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7425)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
Caused by: android.view.InflateException: Binary XML file line #15: Binary XML file line #15: Error inflating class com.google.android.material.navigation.NavigationView
Caused by: android.view.InflateException: …Run Code Online (Sandbox Code Playgroud) 是否可以在每个片段都有自己的工具栏的单个活动应用程序中使用 Android 导航组件/图形?
此外,容器活动有一个导航抽屉,需要设置工具栏和导航控制器,但在活动创建时我还没有工具栏。
我正在使用此代码(在 onCreate 中调用)
private fun setupNavigation() {
// val toolbar = findViewById<Toolbar>(R.id.toolbar);
// setSupportActionBar(toolbar);
// supportActionBar!!.setDisplayHomeAsUpEnabled(true);
// supportActionBar!!.setDisplayShowHomeEnabled(true);
val drawerLayout = findViewById<DrawerLayout>(R.id.drawer_layout);
val navigationView = findViewById<NavigationView>(R.id.drawer_navigation_view);
val navController = Navigation.findNavController(this, R.id.navigation_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)
NavigationUI.setupWithNavController(navigationView, navController)
navigationView.setNavigationItemSelectedListener(this)
}
Run Code Online (Sandbox Code Playgroud)
但是由于我当时没有工具栏,它会引发错误(在空对象上调用 ActionBar.setTitle)。
是否有可能有这个,或者我需要放弃在这种情况下使用导航组件的想法?
android navigation-drawer android-navigation android-navigationview android-architecture-navigation
我尝试通过导航抽屉活动创建一个新项目。使用视图模型自动生成片段。单击导航菜单时,它不会导航到相应的片段。
构建.gradle
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.navigation:navigation-fragment:2.0.0'
implementation 'androidx.navigation:navigation-ui:2.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
Run Code Online (Sandbox Code Playgroud)
主Activity.class
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = 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 = findViewById(R.id.drawer_layout);
NavigationView navigationView = findViewById(R.id.nav_view);
// Passing each menu …Run Code Online (Sandbox Code Playgroud) android navigation-drawer android-navigationview android-navigation-graph
我有NavigationView多个组,这是基于我需要隐藏和显示组的一些条件.我怎么能做到这一点.
我的示例NavigationView菜单
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single"
android:id="@+id/grp_employee"
>
<item
android:id="@+id/help"
android:checked="false"
android:icon="@drawable/ic_help"
android:title="@string/app_name" />
.......
</group>
<group android:checkableBehavior="single"
android:id="@+id/grp_admin"
>
<item
android:id="@+id/admin_help"
android:checked="false"
android:icon="@drawable/ic_help"
android:title="@string/app_name" />
.......
</group>
<group> ... </group>
</menu>
Run Code Online (Sandbox Code Playgroud)
这是我的NavigationView文件.我只想一次只显示一个组视图隐藏所有其他组.
android navigationview android-support-design android-navigationview
我试图替换我认为是NavigationView. 所以我创建了一个 drawable 来替换背景并使用itemBackground属性应用它。
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/navigation_item_background_tint">
<item android:id="@android:id/mask" android:top="4dp" android:bottom="4dp" android:left="8dp" android:right="8dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/white"/>
<corners android:radius="3dp"/>
</shape>
</item>
<item android:top="4dp" android:bottom="4dp" android:left="8dp" android:right="8dp">
<selector>
<item android:state_checked="true">
<shape android:shape="rectangle">
<solid android:color="@color/navigation_item_background_tint"/>
<corners android:radius="3dp"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<corners android:radius="3dp"/>
</shape>
</item>
</selector>
</item>
</ripple>
Run Code Online (Sandbox Code Playgroud)
当项目被选中时,项目背景可绘制看起来很棒(“选择控件”是下图中的选定项目)。但被点击该项目时(“进度指标”下文)看来该默认波纹绘制两者和所述background_navigation_view_item.xml可绘制正在使用(仅一个圆角矩形应该显示,而不是周围的矩形)。
我还测试了 drawable 作为可检查视图的背景,它的工作方式符合我的预期。因此,如果我的可绘制对象的代码中没有错误,为什么不替换原始背景可绘制对象?
android android-drawable navigation-drawer android-navigationview android-jetpack
android ×10
android-architecture-navigation ×1
androidx ×1
drawerlayout ×1
material-components-android ×1
scroll ×1