Android 开发:(十四)NavigationBar篇

编程入门 行业动态 更新时间:2024-10-10 12:19:11

<a href=https://www.elefans.com/category/jswz/34/1771384.html style=Android 开发:(十四)NavigationBar篇"/>

Android 开发:(十四)NavigationBar篇

本篇记录了navigation bar顶部导航栏的自定义方法,抛砖引玉,简单实现了常用的布局,在此基础上可添加较复杂的布局。

第一步:新建NavigationBar文件,继承与FrameLayout。

第二步:设置系统AppTheme为NoActionBar

在res/values目录下style.xml文件:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></style>

第三步: navigationbar.xml 布局

在navigationbar.xml文件中布局:
左边一个ImageView
中间TextView
右边一个ImageView

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#303f9f"android:gravity="center_vertical"><ImageViewandroid:id="@+id/navigationbar_leftImage"android:layout_width="30dp"android:layout_height="30dp"android:layout_margin="10dp" /><TextViewandroid:id="@+id/navigationbar_title"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:gravity="center"android:textColor="@color/bg_white"android:textSize="20sp" /><ImageViewandroid:id="@+id/navigationbar_rightImage"android:layout_width="30dp"android:layout_height="30dp"android:layout_margin="10dp" /></LinearLayout>

第四步: NavigationBar文件

调用xml布局,并实现NavigationBar协议方法。

    private TextView tvTitle;private ImageView leftImage;private ImageView rightImage;public NavigationBar(@NonNull Context context) {super(context);initView(context);}public NavigationBar(@NonNull Context context, @Nullable AttributeSet attrs) {super(context, attrs);initView(context);}public NavigationBar(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);initView(context);}private void initView(Context context) {View view = inflate(context, R.layout.navigationbar, this);tvTitle    = view.findViewById(R.id.navigationbar_title);leftImage  = view.findViewById(R.id.navigationbar_leftImage);rightImage = view.findViewById(R.id.navigationbar_rightImage);}

此时已完成navigationbar的创建,但是为了统一维护,便于管理,再添加几个封装方法,以实现不同需求。

第五步: 封装公共方法

1. title赋值
 public void setTitle(String title) {tvTitle.setText(title);}

2. 对左侧图片赋值
public void setLeftImage(Integer image) {leftImage.setBackgroundResource(image);}
3. 左侧图片并添加点击事件和title字体
 public void init(String title, boolean isLeftVisiable, OnClickListener leftListener){tvTitle.setText(title);if (isLeftVisiable){leftImage.setVisibility(VISIBLE);leftImage.setOnClickListener(leftListener);}else {leftImage.setVisibility(INVISIBLE);}}

4. 右侧图片赋值并添加点击事件
 public void rightTabBar(boolean isRightVisiable, Integer image,  OnClickListener rightListener){rightImage.setBackgroundResource(image);if (isRightVisiable){rightImage.setVisibility(VISIBLE);rightImage.setOnClickListener(rightListener);}else {rightImage.setVisibility(INVISIBLE);}}

更多推荐

Android 开发:(十四)NavigationBar篇

本文发布于:2023-06-17 10:17:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/756966.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Android   十四   NavigationBar

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!