Android有新的ui元素 - BottomNavigationView
我不想在xml文件中包含我的菜单.我将从后端收到有关菜单项和订单的信息.我想动态创建它们并设置BottomNavigationView在onCreate()方法中.我可以这样做吗?
我试图在BottomNavigationView没有使用任何库的情况下为项目添加徽章,但不知何故BottomNavigationView没有显示徽章(custom_view)
main_view.xml:
<RelativeLayout 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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.hrskrs.test.MainActivity">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/colorAccent"
app:itemTextColor="@color/colorPrimaryDark"
app:menu="@menu/bottom_navigation_main" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
bottom_navigation_menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/item_test"
android:icon="@mipmap/ic_launcher"
android:title="action1"
app:showAsAction="always" />
<item
android:enabled="true"
android:icon="@mipmap/ic_launcher"
android:title="action2"
app:showAsAction="ifRoom" />
<item
android:enabled="true"
android:icon="@mipmap/ic_launcher"
android:title="action3"
app:showAsAction="ifRoom" />
</menu>
Run Code Online (Sandbox Code Playgroud)
活动扩展自AppCompatActivity:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu = bottomNavigationView.getMenu();
menu.clear();
getMenuInflater().inflate(R.menu.bottom_navigation_main, menu);
MenuItem item = menu.findItem(R.id.item_test);
item = MenuItemCompat.setActionView(item, R.layout.custom_view); …Run Code Online (Sandbox Code Playgroud) android android-layout bottomnavigationview material-components material-components-android
大家好,我已经实施了design library BottomNavigationView.它的工作完美,但我不知道为什么我的菜单图标没有显示文字也希望它隐藏,向下滚动,如Floating Action Button.但我没有找到任何办法.我阅读了Developers Docs,但我找不到任何解决方案.
这是我的输出 - 项目仅显示未启用的文本
预期输出 - 每个项目都应该包含图像和文本
这是我的xml代码
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:itemBackground="@android:color/white"
app:itemIconTint="@drawable/nav_color_state_list"
app:itemTextColor="@drawable/nav_color_state_list"
android:layout_alignParentBottom="true"
app:menu="@menu/bottom_navigation_menu" />
Run Code Online (Sandbox Code Playgroud)
nav_color_state_list.xml可绘制代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/colorAccent" android:state_checked="true" />
<item android:color="@color/textColorSecondary" android:state_checked="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)
bottom_navigation_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_home"
android:title="Home"
android:icon="@drawable/home_black_36dp"
app:showAsAction="ifRoom|withText"/>
<item
android:id="@+id/menu_notification"
android:title="Notifications"
android:icon="@drawable/add_alert_black_36dp"
app:showAsAction="ifRoom|withText"/>
<item
android:id="@+id/menu_call"
android:title="Call"
android:icon="@drawable/comment_black_36dp"
app:showAsAction="ifRoom|withText"/>
<item
android:id="@+id/menu_more"
android:title="More"
android:icon="@drawable/more_horiz_black_36dp"
app:showAsAction="ifRoom|withText"/>>
</menu>
Run Code Online (Sandbox Code Playgroud) 我正在使用Android应用程序的底部导航视图.我增加了图标的大小,但现在图标会在文本上运行.这是我看到的:
这是根据谷歌设计文档的底部导航视图的图表:
数字10,我想改变那个填充,但当我查看导航栏的属性时,我看不到我能做到的地方.如何将其更改为较小的数字?在我的bottom_layout.xml中,我正在设置我的项目,如下所示:
<item
android:id="@+id/menu_notifications"
android:title="Professionals"
android:icon="@drawable/ic_action_name"
app:showAsAction="ifRoom"
/>
Run Code Online (Sandbox Code Playgroud)
如何更改底部文本填充?
谢谢
我正在尝试实现通常如下所示的新BottomAppBar:将 BottomAppBar用作BottomNavigationView,就像在Google home应用中这样。
我的问题是,因为我只能用菜单资源填充BottomAppBar,所以我不明白如何将按钮对齐以使其看起来像BottomNavigationView(但Fab按钮带有“ cut”),而不是将所有内容都对齐到一侧BottomAppBar的
如何在此新的Material BottomAppBar中添加自定义布局?
或者,是否可以通过Fab按钮的“ cut”实现BottomNavigationView(保留酷炫的默认动画,如新的BottomAppBar)?
android material-design android-appbarlayout bottomnavigationview android-bottomappbar
将最新的导航组件与 一起使用BottomNavigationView,NavController现在默认保存和恢复选项卡的状态:
作为此更改的一部分,onNavDestinationSelected()、BottomNavigationView.setupWithNavController() 和 NavigationView.setupWithNavController() 的 NavigationUI 方法现在会自动保存和恢复弹出目的地的状态,从而无需更改任何代码即可支持多个返回堆栈。当使用带有片段的导航时,这是与多个返回堆栈集成的推荐方法。
这很棒!现在,切换选项卡将为您提供最后查看的堆栈。
但是,如果用户重新选择一个选项卡,假设他们已经离开Home -> Detail Page A -> Detail Page B,然后他们选择Home希望返回到默认视图的选项卡,他们仍然会看到Detail Page B。
似乎讨论的一部分是处理问题跟踪器中提到的“重新选择选项卡”行为,但我无法找出实现此目的的推荐方法。
NavigationAdvancedSample中包含的所有内容是:
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_nav)
bottomNavigationView.setupWithNavController(navController)
// Setup the ActionBar with navController and 3 top level destinations
appBarConfiguration = AppBarConfiguration(
setOf(R.id.titleScreen, R.id.leaderboard, R.id.register)
)
setupActionBarWithNavController(navController, appBarConfiguration)
Run Code Online (Sandbox Code Playgroud)
这只是恢复之前的状态,如发行说明中所述。
我们如何检查是否再次点击导航栏项目并清除后堆栈?
android android-navigation bottomnavigationview android-bottomnav android-architecture-navigation
activity_main.xml中:
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:elevation="4dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="1.0"
/>
Run Code Online (Sandbox Code Playgroud)
bottom_bar.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/tab_addcard"
android:enabled="true"
android:title="@string/addcard"
android:icon="@drawable/ic_tabicon_addcard"
app:showAsAction="ifRoom|withText"/>
<item
android:id="@+id/tab_approvals"
android:enabled="true"
android:title="@string/approvals"
android:icon="@drawable/ic_tabicon_approvals"
app:showAsAction="always|withText"/>
<item
android:id="@+id/tab_mycard"
android:enabled="true"
android:title="@string/mycard"
android:icon="@drawable/ic_tabicon_mycard"
app:showAsAction="always|withText"/>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java:
BottomNavigationView bottombar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottombar= (BottomNavigationView) findViewById(R.id.bottom_navigation);
bottombar.inflateMenu(R.menu.bottom_bar);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:在完成从底栏的初始化到添加项目的所有内容之后.一旦我运行它并快速(非常快)地尝试BottomNavigationView突然间中间项目标题文本的项目选项卡之间的切换消失.任何人都可以建议我解决方案吗?
有没有办法BottomNavigationView像这样使用 XML 属性获取高度的高度?attr/actionBarSize
<com.google.android.material.bottomnavigation.BottomNavigationView
android:layout_width="match_parent"
android:background="@color/whiteColor"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
app:menu="@menu/bottom_navigation_menu"
app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
android:id="@+id/bottomNavigationView"/>
Run Code Online (Sandbox Code Playgroud) 我需要帮助来组合 ViewPager 和 BottomNavigationView。但是当我在 ViewPager 工作时滑动屏幕时,该片段与另一个片段堆叠在一起。我该如何解决?
堆叠片段

刷卡前的普通片段

这是我的代码:
主活动.java
public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
private BottomNavigationView mBottomNavigation;
private ViewPager viewPager;
private ViewPagerAdapter mViewPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadFragment(new HomeFragment());
mBottomNavigation = findViewById(R.id.buttom_navigation);
mBottomNavigation.setOnNavigationItemSelectedListener(this);
viewPager = findViewById(R.id.view_pager);
mViewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(mViewPagerAdapter);
}
private boolean loadFragment(Fragment fragment) {
if (fragment != null) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.container_frame_layout, fragment);
ft.commit();
return true;
}
return false;
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { …Run Code Online (Sandbox Code Playgroud) java android android-fragments android-viewpager bottomnavigationview
我有 3 个项目的底部导航视图,我navGraph看起来像这样:
<navigation 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"
app:startDestination="@id/nested_navigation"
<navigation
android:id="@+id/nested_navigation"
app:startDestination="@id/mainFragment" >
<fragment
android:id="@+id/mainFragment"
android:name="com.example.app.ui.main.MainFragment"
android:label="main_fragment"
tools:layout="@layout/main_fragment" />
<fragment
android:id="@+id/list"
android:name="com.example.app.ui.main.List"
android:label="fragment_news_list"
tools:layout="@layout/fragment_list" />
</navigation>
<fragment
android:id="@+id/settings"
android:name="com.example.app.ui.main.Settings"
android:label="Settings" />
</navigation>
Run Code Online (Sandbox Code Playgroud)
带有嵌套 navGraph 片段的底部导航视图中的导航工作正常,但是如果我导航到settings_fragment嵌套 navGraph 之外的 ,并且我单击其他项目/片段我无法导航到其他片段,我基本上卡住在这个屏幕上。
我检查了发生了什么是如果我把settings_fragment嵌套的 navGraph放在里面,它的效果很好。
我该如何解决这个问题?
顺便说一句 - 我很确定它不相关,但设置片段是PreferenceScreen位于 XML 资源中的布局,而不是布局资源
我的菜单项:
<item
android:id="@+id/mainFragment"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/home"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/list"
android:icon="@drawable/ic_format_list_bulleted_black_24dp"
android:title="@string/news_list"
app:showAsAction="ifRoom"
/>
<item
android:id="@+id/settings"
android:icon="@drawable/ic_settings_black_24dp"
android:title="@string/settings"
app:showAsAction="ifRoom"
/>
Run Code Online (Sandbox Code Playgroud) android kotlin android-navigation bottomnavigationview android-jetpack-navigation
android ×10
java ×2
android-architecture-navigation ×1
android-view ×1
kotlin ×1
material-components-android ×1
xml ×1