[英]How to use BottomNavigationView to switch between two app screens
問題是:我創建了一個具有一個屏幕的應用程序,該屏幕包含ViewPager(包含卡片)和BottomNavigationView。 但是現在我需要添加功能以切換到“關於”屏幕。
問題:如何切換到“關於”布局並返回最佳方式? “關於”只是具有幾個textViews的簡單布局(無需在屏幕之間傳輸數據)
我試圖重寫我的類並創建頂級層次的Main類,該類將容納另一個ViewPager,該ViewPager將容納片段(帶有卡片和“ about”布局的Viewpager)並在它們之間進行切換,但目前還沒有真正起作用,也許有一種更簡單的方法可以在“首頁”頂部顯示“關於”,然后再顯示?
我的NavigationItemSelectedListener在MainActivity中:
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
// change screen
return true;
case R.id.navigation_about:
// change screen
return true;
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// other code here ...
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
// other code here ...
}
代替ViewPager
使用FrameLayout
。 然后創建兩個片段。 一個帶有ViewPager
的片段,另一個帶有About視圖的片段。 在BottomNavigationView
單擊只需替換適當的片段。
希望能幫助到你。 :)
找到了一種可能的方法:
在main_layout中,我創建了constraintLayout:
<android.support.constraint.ConstraintLayout
android:id="@+id/aboutLayer"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/holo_purple" <--- BACKGROUND NOT TRANSPARENT
android:visibility="invisible" <--- INVISIBLE
app:layout_constraintBottom_toTopOf="@+id/navigation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
</android.support.constraint.ConstraintLayout>
在偵聽器中只需更改圖層的可見性
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
// hide about
aboutInfo.setVisibility(View.INVISIBLE);
return true;
case R.id.navigation_about:
// show about
aboutInfo.setVisibility(View.VISIBLE);
return true;
}
return false;
}
看起來像:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.