繁体   English   中英

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

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

我想在选择时更改导航元素的颜色

我有的菜单

例如,当单击计算元素时,我希望背景为浅色

我想要的菜单

我也想更改菜单栏中文本的字体,但我不知道如何

您可以通过更改该按钮的 setOnClickListener 事件的布局背景颜色来完成,如下所示。

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>

代码

按钮的 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);
            }
        });

改变背景颜色的方法

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));
    }

并更改文本的字体

您可以在 xml 端使用 fontFamily,我在字体文件夹中有一些字体

android:fontFamily="@font/robotoslabregular" 

您也可以通过编程方式使用字体来完成:

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

创建此代码的可绘制文件

<?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>

然后放在底部导航栏app:itemBackground="@color/your_file"

完整的答案在这里 愿它帮助你

暂无
暂无

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

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