簡體   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