[英]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我想在选择时更改导航元素的颜色
for example when clicking on the Calculations element I want the background to be a light color例如,当单击计算元素时,我希望背景为浅色
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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.