自定义控件之--组合控件(titlebar)

自定义控件相关知识从郭霖等大神身上学习,这里只不过加上自己的理解和实践,绝非抄袭。

组合控件是自定义控件中最简单的方式,但是是入门自定义控件和进阶的过程:

那么常见的组合控件有那些?

比如titlebar和视图中常见的可重用界面布局的可用都可以通过组合控件的方式来进行自定义,并通过向其他类暴露方法和回调来实现对视图内容显示,隐藏,图片展示,动画活动,文字内容的控制。

废话这么多,写个组合控件来加深影响

首先思考下,titleBar应该包含那些内容,对了左中右三组控件,分别是左右按钮和中间的标题栏,但是有的页面不现实右边按钮,或者其他控件不显示,那么就会存在视图组件的隐藏和显示的问题。那么还有什么问题,对了,title的颜色或者左右按钮字体的颜色和文字的内容。

废话真多,你倒是写个组件让我们看看呀。

好吧,撸码走起:

xml布局文件:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/rl_top"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/top_height"
        android:background="#f8f8f8" >
        <Button
            android:id="@+id/btn_top_back"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_centerVertical="true"
            android:gravity="center"
            android:background="@drawable/btn_top_back"
            android:textSize="20sp" />
        <TextView
            android:id="@+id/tv_top_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:text="@string/app_name"
            android:textColor="@color/black"
            android:textSize="20sp" />
        <Button
            android:id="@+id/btn_top_right"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="@dimen/image_corner_radius"
            android:background="@null"
            android:gravity="center"
            android:textColor="@drawable/btn_top_right_selector"
            android:textSize="16sp" />
        <TextView
            android:layout_width="fill_parent"
            android:layout_alignParentBottom="true"
            android:layout_height="1dp"
            android:background="@color/gray" />
    </RelativeLayout>


组合控件的写法:在构造方法里面加载布局文件和初始化视图,通过写一些公共的方法控制组件显示和隐藏,以及内容来控制TitleView上面的内容。

  1. public class TitleView extends FrameLayout {
        private Button btn_top_back;
        private TextView tv_top_title;
        private Button btn_top_right;
        public TitleView(Context context, AttributeSet attrs) {
            super(context, attrs);
            LayoutInflater.from(context).inflate(R.layout.common_top, this);
            btn_top_back = (Button) findViewById(R.id.btn_top_back);
            tv_top_title = (TextView) findViewById(R.id.tv_top_title);
            btn_top_right = (Button) findViewById(R.id.btn_top_right);
        }
        public void setvisible(int left,int middle,int right){
            btn_top_back.setVisibility(left);
            tv_top_title.setVisibility(middle);
            btn_top_right.setVisibility(right);
        }
        public void setTitle(String title){
            tv_top_title.setText(title);
        }
        public void setLeftOnclickListener(OnClickListener onClickListener){
            btn_top_back.setOnClickListener(onClickListener);
        }
        public void setRightOnclickListener(OnClickListener onClickListener){
            btn_top_right.setOnClickListener(onClickListener);
        }
    
        public void setRightText(String text){
            btn_top_right.setText(text);
        }
    }

    在布局里面就可以通过包名+类名来重用title布局文件,在activity或者fragement里面初始化,通过TitleView的方法控制内容的显示和隐藏,以及内容的变化,控件事件的响应。

时间: 2024-08-29 21:42:47

自定义控件之--组合控件(titlebar)的相关文章

【自定义控件】组合控件

组合控件是自定义控件的一种,只不过它是由其他几个原生控件组合而成,故名组合控件. 在实际项目中,GUI会遇到一些可以提取出来做成自定义控件情况. 一个自定义控件的好处就是把一些需要模块化的UI和逻辑放在一起,做到了高内聚,向其他模块提供接口并很少 依赖外界,这样就是低耦合.一个自定义控件就是一个封闭的王国,这里由你掌控. 上述是我自己的一个体会,想必大家也会常做自定义控件吧,就像逻辑部分的模块化一样. 下面我要做一个例子,请看完成图. 下面一排图片加文字就是组合控件了,我是怎么做的呢? 其实这里

【安卓自定义控件系列】安卓自定义控件之组合控件

在安卓开发中,谷歌已经为我们提供了许多原生控件,基本上能够满足我们日常的开发需求,但是某些项目中原生控件可能达不到产品所要求的各式各样的酷炫效果或功能效果,这个时候我们只能自己自定义控件来满足项目需求,我们知道自定义控件包括三种方式: 1继承控件,即继承谷歌提供的原生控件,在此基础上提供一些原生控件不具备的功能,如github上各种酷炫效果的开源组件基本上都是采用的这种方式. 2组合控件:即组合多个原生控件来达到某些单个原生控件原本不具备的功能,这个在日常开发中应该是使用的比较多的,如基本上每个

Android自定义控件——自定义组合控件

转载请注明出处http://blog.csdn.net/allen315410/article/details/39581055  前面几篇博文介绍了Android如何自定义控件,其实就是讲一下如何"从无到有"的自定义一个全新的控件,继承View或者继承ViewGroup,复写其相关方法,这种自定义控件的方式相对来说难度较大,而且并不是所有需要新控件的情况下,都要这样进行.有很多情况下,我们只要运用好Android给我提供好的控件,经过布局巧妙的结合在一起,就是一个新的控件,我称之为&

Android自定义控件之自定义组合控件(三)

前言: 前两篇介绍了自定义控件的基础原理Android自定义控件之基本原理(一).自定义属性Android自定义控件之自定义属性(二).今天重点介绍一下如何通过自定义组合控件来提高布局的复用,降低开发成本,以及维护成本. 使用自定义组合控件的好处? 我们在项目开发中经常会遇见很多相似或者相同的布局,比如APP的标题栏,我们从三种方式实现标题栏来对比自定义组件带来的好处,毕竟好的东西还是以提高开发效率,降低开发成本为导向的. 1.)第一种方式:直接在每个xml布局中写相同的标题栏布局代码 <?xm

自定义组合控件和在自定义控件中使用自定义属性

今天,整理了一下我平时的笔记,写一个比较简单的自定义组合控件,仅供小白参考,大神请绕道,希望能够对大家有一些帮助 首先,得明白为什么我们需要自定义组合控件,它是因为原有控件并不能满足开发的需求,或者说并不能达到我们想要的一种效果,这个时候,就需要我们自己定义一些控件,以达到目的 ![先来看一下效果](http://img.blog.csdn.net/20160716224219109) 个人总结自定义控件的步骤: 1.先写一个布局,这里我用的是一个相对布局,我这里的相对布局就是根布局了 <?xm

Andriod 自定义控件之创建可以复用的组合控件

前面已学习了一种自定义控件的实现,是Andriod 自定义控件之音频条,还没学习的同学可以学习下,学习了的同学也要去温习下,一定要自己完全的掌握了,再继续学习,贪多嚼不烂可不是好的学习方法,我们争取学习了一种技术就会一种技术,而且不光看了就算了,最好的方法就是看完我自己再练习下,再扩展下,在原来的基础上在添加一些东西,比如,增加一些功能实现等等. 今天我们打算学习下另外一种自定义控件,就是创建可重复使用的组合控件,那么问题来了: 什么是可重复使用?就是在应用中,可以在多个地方共同使用一套代码.这

自定义控件之创建可以复用的组合控件(三)

前面已学习了两种自定义控件的实现,分别是自定义控件之对现有控件拓展(一)和 自定义控件之直接继承View创建全新视图(二),还没学习的同学可以学习下,学习了的同学也要去温习下,一定要自己完全的掌握了,再继续学习,贪多嚼不烂可不是好的学习方法,我们争取学习了一种技术就会一种技术,而且不光看了就算了,最好的方法就是看完我自己再练习下,再扩展下,在原来的基础上在添加一些东西,比如,增加一些功能实现等等. 今天我们打算学习下另外一种自定义控件,就是创建可重复使用的组合控件,那么问题来了: - 什么是可重

Android自定义控件View(三)组合控件

不少人应该见过小米手机系统音量控制UI,一个圆形带动画效果的音量加减UI,效果很好看.它是怎么实现的呢?这篇博客来揭开它的神秘面纱.先上效果图 相信很多人都知道Android自定义控件的三种方式,Android自定义控件View(一)自绘控件,Android自定义控件View(二)继承控件,还有就是这一节即将学习到的组合控件.我们通过实现圆形音量UI来讲解组合控件的定义和使用. 组合控件 所谓组合控件就是有多个已有的控件组合而成一个复杂的控件.比如上图的音量控件就是一个完美的组合控件.我们来分析

Android实例-手机安全卫士(八)-自定义组合控件事件相应和改变状态

一.目标. 实现自定义控件点击事件响应和内容状态变化. 1.点击自定义控件内的任何区域时,CheckBox状态均会变化. 2.自定义控件里面的内容会根据CheckBox的状态进行改变. 效果图1:      二.代码实现. 1.在自定义控件类(SettingItemView)中增加方法. ①.在自定义控件类对应的xml文件(SettingItemView)中设置各个控件的id,便于自定义控件类(SettingItemView)对它们进行操作.同时,设置CheckBox的clickable属性为f