当前位置: 首页 > 知识库问答 >
问题:

底部导航栏没有改变颜色

佘单鹗
2023-03-14

我有一个包含四个片段的活动(MainActivity)(HomeFragment、callsFragment、chatsFragment、contactsFragment)。主活动只有一个用于放置HomeFragment的框架布局。虽然homefragment内部包含viewpager和底部导航视图,但在更改页面底部导航文本时

以下代码:

fragment\u主页。xml

<layout
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">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.jona.bottomnavviewpager.HomeFragment"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="0dp">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        android:layout_above="@+id/bottom_navigation"
        android:layout_alignParentTop="true"/>

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        app:itemBackground="@color/colorPrimary"
        app:itemIconTint="@drawable/bottom_navigation_color_selector"
        app:itemTextColor="@drawable/bottom_navigation_color_selector"
        app:menu="@menu/menu_bottom_navigation"
        android:layout_alignParentBottom="true"
        />

</RelativeLayout>

bottom\u navigation\u color\u选择器。xml

<?xml version="1.0" encoding="utf-8"?>
<selector
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@color/tab_checked"  />
    <item android:state_checked="false" android:color="@color/tab_unchecked"  />
</selector>

menu\u bottom\u导航。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/action_call"
        android:icon="@drawable/ic_call"
        android:title="@string/tab1"
        />
    <item
        android:id="@+id/action_chat"
        android:icon="@drawable/ic_chat"
        android:title="@string/tab2"
        />
    <item
        android:id="@+id/action_contact"
        android:icon="@drawable/ic_contacts"
        android:title="@string/tab3"
        />
</menu>

HomeFragment。Java语言

public class HomeFragment extends Fragment {
private final static String TAG = "FragmentRumah";
private MenuItem prevMenuItem;

public HomeFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    //int argVal;
    final FragmentHomeBinding binding = DataBindingUtil.inflate(inflater, R.layout.fragment_home, container, false);

    View view = binding.getRoot();

    setupViewPager(binding.viewpager);

    binding.bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()){
                case R.id.action_call:
                    binding.viewpager.setCurrentItem(0);
                    Log.d(TAG, "onNavigationItemSelected: action call");
                    break;
                case R.id.action_chat:
                    binding.viewpager.setCurrentItem(1);
                    Log.d(TAG, "onNavigationItemSelected: action chat");
                    break;
                case R.id.action_contact:
                    binding.viewpager.setCurrentItem(2);
                    Log.d(TAG, "onNavigationItemSelected: action contact");
                    break;
            }
            return false;
        }
    });

    binding.viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            Log.d(TAG, "onPageScrolled");
        }

        @Override
        public void onPageSelected(int position) {
            Log.d(TAG, "onPageSelected");
            if (prevMenuItem != null){
                prevMenuItem.setChecked(false);
            } else {
                binding.bottomNavigation.getMenu().getItem(0).setChecked(false);
            }
            Log.d("page", "onPageSelected: "+position);
            binding.bottomNavigation.getMenu().getItem(0).setChecked(true);
            prevMenuItem = binding.bottomNavigation.getMenu().getItem(0);
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            Log.d(TAG, "onPageScrollStateChanged");
        }
    });
    return view;
}

private void setupViewPager(ViewPager viewpager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
    adapter.addFragment(new callsFragment());
    adapter.addFragment(new chatFragment());
    adapter.addFragment(new contactsFragment());
    viewpager.setAdapter(adapter);
}

}

共有1个答案

卢鸿博
2023-03-14

我改变了这一点,在样式中添加了以下内容。xml

<item name="android:navigationBarColor">@color/customColor</item>
 类似资料:
  • Tabbar 底部导航栏 1.4.8 优点: 此组件一般用于应用的底部导航,具有如下特点: 可以设置凸起的按钮,且是全端通用的 图标可以使用字体图标(内置图标和扩展图标)或者图片 可以动态切换菜单的数量以及配置 切换菜单之前,可以进行回调鉴权 可以设置角标 有效防止组件区域高度塌陷,无需给父元素额外的内边距或者外边距来避开导航的区域 缺点: 虽然优点很多,但是如果用此组件模拟tabbar页面的话依

  • setBarBottomLineColor 可通过该接口自定义导航栏底部细线的颜色,当颜色与导航栏相同时可达到隐藏的效果 使用方法 AlipayJSBridge.call("setBarBottomLineColor", { color: 16711688 }); 代码演示 <div style="padding-top:80px;"> <a href="javascript:void(

  • 我想更改android手机本机底部导航的颜色。就像下面的图片一样,它是完全黑暗的。这真的有可能吗?如果是,我该怎么做? 非常感谢。

  • 在我的应用程序中,我需要更改底部导航栏的颜色。我看了很多帖子,但没有找到解决办法。我正在使用appCompat库。 v21/样式。xml

  • 本文向大家介绍Flutter实现底部导航栏,包括了Flutter实现底部导航栏的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Flutter实现底部导航栏的具体代码,供大家参考,具体内容如下 效果 实现 先将自动生成的main.dart里面的代码删除, 创建app.dart作为首页的页面文件 创建today.dart、kb.dart、playground.dart三个页面文件作为ta

  • 本文向大家介绍android实现底部导航栏,包括了android实现底部导航栏的使用技巧和注意事项,需要的朋友参考一下 底部导航栏我选择用FragmentTabHost+Fragment来实现,这个方法比较好用,代码量也不多 首先是开始的activity_main.xml 也可以直接在xml文件里面写 这xml文件就一个view加一个tab  view用来显示碎片,tab用来放置底部按钮的数量 再