简体   繁体   English

选中时如何更改导航栏元素的颜色 ANDROID STUDIO

[英]How to change color of navigation bar elements when they are selected ANDROID STUDIO

I want to change the color of the navigation element when its selected我想在选择时更改导航元素的颜色

menu i have我有的菜单

for example when clicking on the Calculations element I want the background to be a light color例如,当单击计算元素时,我希望背景为浅色

menu i want我想要的菜单

Also i want to change font of the text in menu bar, but i dont know how我也想更改菜单栏中文本的字体,但我不知道如何

You can do by changing background colour of layout on setOnClickListener event of that button like below.您可以通过更改该按钮的 setOnClickListener 事件的布局背景颜色来完成,如下所示。

xml File of navigation menu xml 导航菜单文件

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="?actionBarSize"
        android:layout_alignParentBottom="true"
        android:animateLayoutChanges="true"
        android:background="@color/nonitemclicked"
        android:orientation="horizontal">

        <LinearLayout
            android:id="@+id/ly_calculator"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/img_calculator"
                android:layout_width="28dp"
                android:layout_height="28dp"
                android:layout_marginTop="2dp"
                android:padding="3dp"
                android:src="@drawable/ic_calculator"
                app:tint="@color/white" />

            <TextView
                android:id="@+id/txt_calculator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/robotoslabregular"
                android:gravity="center_horizontal"
                android:padding="3dp"
                android:text="Calculation"
                android:textColor="@color/white"
                android:textSize="12sp" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ly_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/img_list"
                android:layout_width="28dp"
                android:layout_height="28dp"
                android:layout_marginTop="2dp"
                android:padding="4dp"
                android:src="@drawable/ic_list"
                app:tint="@color/white" />

            <TextView
                android:id="@+id/txt_list"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/robotoslabregular"
                android:gravity="center_horizontal"
                android:padding="3dp"
                android:text="Calculation list"
                android:textColor="@color/white"
                android:textSize="12sp" />

        </LinearLayout>

        <LinearLayout
            android:id="@+id/ly_setting"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:orientation="vertical">

            <ImageView
                android:id="@+id/img_setting"
                android:layout_width="28dp"
                android:layout_height="28dp"
                android:layout_marginTop="2dp"
                android:padding="2dp"
                android:src="@drawable/ic_setting"
                app:tint="@color/white" />

            <TextView
                android:id="@+id/txt_setting"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:fontFamily="@font/robotoslabregular"
                android:gravity="center_horizontal"
                android:padding="3dp"
                android:text="Setting"
                android:textColor="@color/white"
                android:textSize="12sp" />

        </LinearLayout>

    </LinearLayout>

Code代码

setOnClickListner of buttons按钮的 setOnClickListner

        ly_calculator.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setcolorOnItemClick(ly_calculator, ly_list, ly_setting);
            }
        });
        ly_list.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setcolorOnItemClick(ly_list, ly_calculator, ly_setting);
            }
        });
        ly_setting.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setcolorOnItemClick(ly_setting, ly_calculator, ly_list);
            }
        });

Method for changing background colour改变背景颜色的方法

public void setcolorOnItemClick(LinearLayout ly1, LinearLayout ly2, LinearLayout ly3) {
        ly1.setBackgroundColor(getResources().getColor(R.color.itemclicked));
        ly2.setBackgroundColor(getResources().getColor(R.color.nonitemclicked));
        ly3.setBackgroundColor(getResources().getColor(R.color.nonitemclicked));
    }

And for change font of the text并更改文本的字体

You can do using fontFamily in xml side and i have some font in font folder您可以在 xml 端使用 fontFamily,我在字体文件夹中有一些字体

android:fontFamily="@font/robotoslabregular" 

You can also do by programmatically using typeface:您也可以通过编程方式使用字体来完成:

txt_calculator.setTypeface(getResources().getFont(R.font.robotoslabmedium));

Create a drawable file of this code创建此代码的可绘制文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="your_active_color" android:state_checked="true"/>
    <item android:drawable="your_inactive_color"/>
</selector>

Then put it in this attribute of bottom nav bar app:itemBackground="@color/your_file"然后放在底部导航栏app:itemBackground="@color/your_file"

The full answer is here .完整的答案在这里 May it help you愿它帮助你

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM