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

简介: 自定义控件相关知识从郭霖等大神身上学习,这里只不过加上自己的理解和实践,绝非抄袭。   组合控件是自定义控件中最简单的方式,但是是入门自定义控件和进阶的过程: 那么常见的组合控件有那些? 比如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的方法控制内容的显示和隐藏,以及内容的变化,控件事件的响应。

相关文章
|
Windows
Winform控件优化之背景透明那些事1:Button控件等背景透明
WinForm不支持真正的透明,其控件透明的实现都是背景颜色设置和对应位置的父控件背景相同。 Winform中控件的背景透明只有三种:Button控件的透明、其他控件的透明...
2461 0
Winform控件优化之背景透明那些事1:Button控件等背景透明
WPF自定义控件05:ToggleButton
本文重点介绍WPF中如何实现自定义ToggleButton控件,它是一个开关控件,通过单击来进行状态的快速切换。
4286 0
WPF自定义控件05:ToggleButton
|
15天前
|
XML Java Android开发
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
Android控件之基础控件——进度条类的view——TextView、Checkbox复选控件、RadioButton单选控件、ToggleButton开关、SeekBar拖动条、menu、弹窗
|
8月前
|
C# Windows
WPF技术之ToolBar控件
WPF ToolBar控件是Windows Presentation Foundation(WPF)中的一个常用工具栏控件,它可以用于在应用程序中显示一组工具按钮或命令按钮。ToolBar可以被嵌套在其他控件内部,例如窗口或面板,并支持自定义布局。
270 0
|
C#
WPF 获取 ListView DataTemplate 中控件值
原文:WPF 获取 ListView DataTemplate 中控件值 版权声明:本文为博主原创文章,未经博主允许可以随意转载 https://blog.csdn.
1641 0
|
C# 存储
WPF 实现跑马灯效果的Label控件,数据绑定方式实现
原文:WPF 实现跑马灯效果的Label控件,数据绑定方式实现 项目中需要使用数据绑定的方式实现跑马灯效果的Label,故重构了Label控件;具体代码如下 using System; using System.
2288 0
|
C#
WPF ListView 居中显示
原文:WPF ListView 居中显示 今天遇到的问题: 方法1:设置GridViewColumn的ActualWidth ...
1651 0

热门文章

最新文章