我的活动顶部有4个片段,BottomNavigationView底部有4个项目。它在移动设备上运行良好。当我使用LANDASCAPE去平板电脑时,我想将BottomNavigationView移动到活动的左侧,垂直方向如下所示。
使用BottomNavigationView可以实现这个目标,还是应该使用NavigationMenu android。
答案 0 :(得分:1)
由于您无法自定义BottomNavigation以便垂直使用,因此我建议(如果您仍然无法解决问题的话)切换到该库:SideMenu-Android 或者,您可以创建自定义的导航抽屉。
答案 1 :(得分:1)
好吧,我通过调整方向更改和移动了一些视图来做到了,这就是BottomNavigationView想要的。 首先,为了改变方向,我将其添加到了AndroidManifest的Activity标签中
android:configChanges="orientation|screenSize"
在我的活动中,我添加了
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
BottomNavigationView navigation= (BottomNavigationView) findViewById(R.id.navigation);
navigation.setRotation(90f);
navigation.getLayoutParams().width=480;
navigation.requestLayout();
navigation.setY(600f);
navigation.setX(-435f);
// navigation.requestLayout();
BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigation.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
final View iconView = menuView.getChildAt(i);
iconView.setRotation(-90f);
}
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
recreate();
}
}
我的XML是
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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"
tools:context=".MainActivity">
<TextView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:text="@string/title_home"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="0dp"
android:layout_marginEnd="0dp"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
</android.support.constraint.ConstraintLayout>
当然,您必须根据手机的需要更改navigation.getLayoutParams()。width,setX和setY。您可以创建一个函数来计算位置。抱歉,它是在白天的10:30,并且整夜都在编码,所以要休息一下,所以无法编写该函数。但是,如果您愿意,我会编写该函数。它是我为手机Vivo Y51L工作的内容,您可以查看屏幕截图。
答案 2 :(得分:0)
<item
android:id="@+id/text"
android:title="@string/about"
android:icon="@android:drawable/ic_menu_info_details"
app:showAsAction="never"/>
将app:showAsAction="never"
放入evey菜单项并尝试...
答案 3 :(得分:0)
我担心BottomNavigationView
仅处理页面导航的底部,您应该创建自己的自定义抽屉或使用菜单in this link中的一个
如果这些操作没有帮助,您可以进一步了解this documentation,了解如何处理不同的布局
希望这会有所帮助
答案 4 :(得分:-1)
您不能将BottomNavigationView移动到布局的左侧区域。
BottomNavigationView不符合平板电脑材料设计规范
唯一的方法是您需要像
一样在开始时检查屏幕方向if (islandcape()){
//Create the Navigation view layout here..
}else{
//Create the BottomNavigationView layout here ..
}
注意:您需要编写一个函数来检查方向并替换上面代码中的 islandcape()
还可以尝试下面的波纹管库,它可以很好地完成这项工作。
Iiro Krankka https://github.com/roughike/BottomBar