gpt4 book ai didi

java - 同时显示底部导航 View 和抽屉式导航

转载 作者:行者123 更新时间:2023-12-02 00:27:09 27 4
gpt4 key购买 nike

很简单,抽屉导航中的第一个选项,我目前可以使用片段,我希望首先打开它以使用具有自己的片段的底部导航项打开我的 View 。我知道我的做法是错误的,但任何帮助都会有所帮助。我还想将操作栏保留在顶部,同时我处于底部导航 View Activity 或片段(如果我可以转换它),我显然知道得不多。

Navigation Drawer Activity
public class HomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

private DrawerLayout drawer;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);

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

drawer = findViewById(R.id.drawer_layout);

NavigationView navigationView = findViewById(R.id.main_nav_view);

navigationView.setNavigationItemSelectedListener(this);

ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();

if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, new AccountFragment()).commit();
navigationView.setCheckedItem(R.id.nav_account);
}
}

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {

switch (item.getItemId()) {
case R.id.nav_account:
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, new AccountFragment()).commit();
break;
case R.id.nav_nfc:
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, new NfcFragment()).commit();
break;
case R.id.nav_report:
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, new ReportUserFragment()).commit();
break;
case R.id.nav_settings:
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, new SettingsFragment()).commit();
break;
case R.id.nav_about:
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, new AboutFragment()).commit();
break;
case R.id.nav_help:
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, new HelpFragment()).commit();
break;
case R.id.nav_logout:
getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment_container, new LogoutFragment()).commit();
break;
}

drawer.closeDrawer(GravityCompat.START);

return true;
}

@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();

}

}
}
Navigation Drawer XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout"
android:fitsSystemWindows="true"
tools:context=".MainActivity"
tools:openDrawer="start">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/darkgrey"
android:id="@+id/toolbar"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:elevation="4dp"/>

<FrameLayout
android:id="@+id/main_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</LinearLayout>

<com.google.android.material.navigation.NavigationView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:id="@+id/main_nav_view"
app:headerLayout="@layout/nav_header"
app:menu="@menu/drawer_menu"/>

</androidx.drawerlayout.widget.DrawerLayout>
Bottom Navigation View Activity
public class BottomNavigation extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bottom_navigation);
BottomNavigationView navView = findViewById(R.id.nav_view);
navView.setOnNavigationItemSelectedListener(this);

loadFragment(new PeopleFragment());
}

private boolean loadFragment(Fragment fragment) {

if(fragment != null) {

getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
return true;
}
return false;
}

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

Fragment fragment = null;

switch (menuItem.getItemId()) {

case R.id.navigation_people:
fragment = new PeopleFragment();
break;

case R.id.navigation_products:
fragment = new ProductsFragment();
break;

case R.id.navigation_scanner:
fragment = new ScannerFragment();
break;

/*case R.id.navigation_nfc:
fragment = new NfcFragment();
break;*/

case R.id.navigation_collection:
fragment = new CollectionFragment();
break;

case R.id.navigation_profile:
fragment = new ProfileFragment();
break;

}
return loadFragment(fragment);
}
}
Bottom Navigation View XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
tools:context=".BottomNavigation">

<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="56dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"></FrameLayout>

<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/darkgrey"
app:itemIconTint="@color/grey"
app:itemTextColor="@color/grey"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_nav_menu" />

</androidx.constraintlayout.widget.ConstraintLayout>

最佳答案

我这样做了,在我的 onCreate 中使用了这段代码

public class MainActivity extends AppCompatActivity {

private AppBarConfiguration mAppBarConfiguration;
@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 ID as a set of Ids because each
// menu should be considered as top level destinations.
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_perfil, R.id.nav_carrito, R.id.nav_pedidos, R.id.nav_soporte, R.id.nav_articulos)
.setDrawerLayout(drawer)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);

//al dar click sobre las opciones del menu de navegacion inferior entra aqui
BottomNavigationView btnMenu=(BottomNavigationView) findViewById(R.id.bottomNavigationView);
NavigationUI.setupWithNavController(btnMenu, navController);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
}

关于java - 同时显示底部导航 View 和抽屉式导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com