【发布时间】:2020-01-10 17:48:19
【问题描述】:
在我的活动中,我有一个底部导航栏和显示片段的框架布局一切正常,但问题是当我开始按顺序从 1 到 4 移动时,底部导航栏保持在其位置但当我突然跳跃时从 4 到 2 然后底部导航栏离开屏幕,当再次单击同一项目时,它会回到正常位置。
此视频将清楚地帮助您解决我的问题Click to watch.
我想这是考虑 UI 时的一个主要问题,所以请帮助我如何实现这一点。为了让事情变得更容易,我发布了包含这些元素的代码。
activity_appMain.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AppFragments.AppMain">
<FrameLayout
android:id="@+id/fragments_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/navigation_bar"/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="?android:attr/windowBackground"
app:labelVisibilityMode="labeled"
app:menu="@menu/bottom_navigation" />
</RelativeLayout>
AppMain.java
package com.coderedinnovations.allioservices.AppFragments;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MenuItem;
import android.view.WindowManager;
import com.coderedinnovations.allioservices.AppFragments.FeedbackFragment;
import com.coderedinnovations.allioservices.AppFragments.HomeFragment;
import com.coderedinnovations.allioservices.AppFragments.MyOrdersFragment;
import com.coderedinnovations.allioservices.AppFragments.MyProfileFragment;
import com.coderedinnovations.allioservices.R;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.firebase.iid.FirebaseInstanceId;
public class AppMain extends AppCompatActivity {
public void adjustFontScale(Configuration configuration){
configuration.fontScale = (float) 0.9;
DisplayMetrics metrics = getResources().getDisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_main);
adjustFontScale(getResources().getConfiguration());
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
BottomNavigationView bottomNavigationView = findViewById(R.id.navigation_bar);
bottomNavigationView.setOnNavigationItemSelectedListener(navigationItemSelectedListener);
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container, new HomeFragment()).commit();
}
private BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelectedListener =
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
Fragment selectedFragment = null;
switch (menuItem.getItemId()){
case R.id.nav_home:
selectedFragment = new HomeFragment();
break;
case R.id.nav_orders:
selectedFragment = new MyOrdersFragment();
break;
case R.id.nav_feedback:
selectedFragment = new FeedbackFragment();
break;
case R.id.nav_profile:
selectedFragment = new MyProfileFragment();
break;
}
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,selectedFragment).commit();
return true;
}
};
}
我找了一个类似的问题,但没有一个得到回答
编辑:问题仅在我从后向前按时出现,但当我从 1-4 开始时,问题不会出现,但当我突然从 4 点按到任何其他选项卡时,栏会被向下推。
【问题讨论】:
-
我的导航视图有一个奇怪的行为,这是我在任何应用程序中都没有见过的。当我从 1 到 4 开始交易时,选项卡会平稳变化,但是当我突然从 4 按下到另一个选项卡时,底部栏会被向下推,当我按下同一个选项卡时,它会再次出现。只有当我从 4 回到任何其他选项卡时才会发生这种情况。我尝试了很多东西,但没有一个能解决问题。请帮助我知道问题出在哪里。
标签: java android android-studio bottomnavigationview