我是第一次使用NavigationView,但遇到了问题。
当我单击NavigationView中的项目时,它会转到开始位置而没有显示吐司。
这是我的代码:
class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navigationView = findViewById<NavigationView>(R.id.navigationView)
navigationView.setNavigationItemSelectedListener(this)
phoneBTT.setOnClickListener {
Toast.makeText(this, "Phone BTT is clicked", Toast.LENGTH_LONG).show()
}
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
when(item.itemId)
{
R.id.galleryBTT -> {
Toast.makeText(this, "Gallery BTT is clicked", Toast.LENGTH_LONG).show()
}
R.id.exitBTT -> {
Toast.makeText(this, "Exit BTT is clicked", Toast.LENGTH_LONG).show()
}
R.id.alarmBTT -> {
Toast.makeText(this, "Alarm BTT is clicked", Toast.LENGTH_LONG).show()
}
R.id.creditCardBTT -> {
Toast.makeText(this, "CreditCard BTT is clicked", Toast.LENGTH_LONG).show()
}
}
return true
}
答案 0 :(得分:0)
像这样使用导航视图
private void setupNavigationView() {
BottomNavigationViewHelper.disableShiftMode(bottomNavigation);
menu = bottomNavigation.getMenu();
selectFragment(menu.getItem(0));
bottomNavigation.setOnNavigationItemSelectedListener(
item -> {
selectFragment(item);
return false;
});
}
protected void selectFragment(MenuItem item) {
item.setChecked(true);
FragmentManager fm = getSupportFragmentManager();
switch (item.getItemId()) {
case R.id.galleryBTT:
//Put your Code here
break;
case R.id.exitBTT:
//Put your Code
break;
case R.id.creditCardBTT :
//Put your Code
break;
}
}
答案 1 :(得分:0)
这是我的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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button" android:layout_marginTop="228dp"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="192dp"/>
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:theme="?attr/actionBarTheme"
android:minHeight="?attr/actionBarSize" android:id="@+id/toolbar3"/>
<Button
android:layout_width="36dp"
android:layout_height="46dp" android:id="@+id/phoneBTT"
app:layout_constraintEnd_toEndOf="@+id/toolbar3" app:layout_constraintStart_toStartOf="@+id/toolbar3"
android:layout_marginStart="8dp"
app:layout_constraintBottom_toBottomOf="@+id/toolbar3" android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="@+id/toolbar3" app:layout_constraintHorizontal_bias="0.023"
app:layout_constraintVertical_bias="0.0"
android:background="@drawable/ic_phone_black_24dp"/>
</android.support.constraint.ConstraintLayout>
<android.support.design.widget.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/nav_menu" android:id="@+id/navigationView">
</android.support.design.widget.NavigationView>
上一个NavigationView位于此脚本的顶部(在DrawerLayout中)。 当我把它放到最下面时,它开始工作了!
答案 2 :(得分:0)
NavigationView是一种与DrawerLayout一起显示菜单资源中的导航菜单的简便方法,可在appbar布局上实现精心设计的导航菜单。NavigationView是设计支持库的小部件。
将DrawerLayout添加为父级布局,将NavigationView作为DrawerLayout的直接子级:
<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/nav_menu">
</android.support.design.widget.NavigationView>
在res / menu / nav_menu.xml中创建菜单资源文件:
<item
android:id="@+id/action_home"
android:enabled="true"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/home"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_msg"
android:enabled="true"
android:icon="@drawable/ic_message_black_24dp"
android:title="@string/msg"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_video"
android:enabled="true"
android:icon="@drawable/ic_ondemand_video_black_24dp"
android:title="@string/video"
app:showAsAction="ifRoom" />
现在实现导航视图的onNavigationItemSelectedListener,以显示toast消息onMainActivity.java文件中不同菜单项的点击:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.action_home:
Toast.makeText(this, "Home is clicked", Toast.LENGTH_LONG).show();
break;
case R.id.action_msg:
Toast.makeText(this, "Message is clicked", Toast.LENGTH_LONG).show();
break;
case R.id.action_video:
default:
Toast.makeText(this, "Video is clicked", Toast.LENGTH_LONG).show();
break;
}
mDrawer.closeDrawers();
return true;
}
查看此答案:How to implement navigation drawer in android app ?
快乐编码...