最新文章专题视频专题关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
受权与授权的区别 什么是社会面清零 社会面清零主要做什么 什么是中国人民警察节 中国人民警察节是哪天 中国人民警察节设立意义 中国人民警察节的由来 中国人民警察节祝福语 设立中国人民警察节的原因 山海经上古三大神木 c语言心形编程代码 ifnull函数 python自动化脚本 lte关闭还是开启好 python asyncio es6数组去重 数组去重的5种方法 vue prop属性 100个神话故事的名字 谐音梗游戏名字 用python画星空 vue保留两位小数 js四舍五入保留两位小数 js保留两位小数四舍五入 脂肪率怎么计算 红军三大任务是哪三个 过目不忘的足浴店名字 python中split的用法 python 字符转数字 cv2.imread函数 mysql 查看版本 python 字符串连接 税务ukey怎么升级版本 python格式化字符串 python 字符串匹配 html转义字符 python 字符串切片 家委会班级群说话技巧 python 格式化字符串 python字符串删除指定字符
当前位置: 首页 - 科技 - 知识百科 - 正文

android 自定义view

来源:懂视网 责编:李赢赢 时间:2021-12-30 16:15:15
文档

android 自定义view

android可以通过组合控件来实现自定义view。组合控件就是将系统原有的控件进行组合,构成一个新的控件。这种方式下,不需要开发者自己去绘制图上显示的内容,也不需要开发者重写onMeasure,onLayout,onDraw方法来实现测量、布局以及draw流程。
推荐度:
导读android可以通过组合控件来实现自定义view。组合控件就是将系统原有的控件进行组合,构成一个新的控件。这种方式下,不需要开发者自己去绘制图上显示的内容,也不需要开发者重写onMeasure,onLayout,onDraw方法来实现测量、布局以及draw流程。

android怎么自定义view呢?不知道的小伙伴来看看小编今天的分享吧!

android可以通过组合控件来实现自定义view。组合控件就是将系统原有的控件进行组合,构成一个新的控件。这种方式下,不需要开发者自己去绘制图上显示的内容,也不需要开发者重写onMeasure,onLayout,onDraw方法来实现测量、布局以及draw流程。

具体操作:

1、定义标题栏布局文件

 定义标题栏的布局文件custom_title_view.xml,将返回按钮和标题文本进行组合。这一步用于确定标题栏的样子,代码如下所示:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@android:color/holo_orange_light">

<Button

android:id="@+id/btn_left"

 android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="5dp"

android:text="Back"

android:textColor="@android:color/white" />

<TextView

android:id="@+id/title_tv"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:text="Title"

android:textColor="@android:color/white"

android:textSize="20sp" />

</RelativeLayout>

2、根据给定布局实现自定义View

public class CustomTitleView extends FrameLayout implements View.OnClickListener {

private View.OnClickListener mLeftOnClickListener;

private Button mBackBtn;

private TextView mTittleView;

public CustomTitleView(@NonNull Context context, @Nullable AttributeSet attrs) {

super(context, attrs);

LayoutInflater.from(context).inflate(R.layout.custom_title_view, this);

mBackBtn = findViewById(R.id.btn_left);

mBackBtn.setOnClickListener(this);

mTittleView = findViewById(R.id.title_tv);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_left:

if (mLeftOnClickListener != null) {

mLeftOnClickListener.onClick(v);

 }

break;

}

}

public void setLeftOnClickListener(View.OnClickListener leftOnClickListener) {

mLeftOnClickListener = leftOnClickListener;

}

public void setTittle(String title){

mTittleView.setText(title);

}

}

说明:

(1)代码中对外提供了两个接口,一是动态设置标题,二是使用者可以自定义返回按钮的点击事件。

(2)CustomTitleView的构造函数,要选择两个参数的,选择其它参数的构造函数会报错。这一点是笔者开发机测试的结果,暂时不清楚是不是所有手机上都是这样。

(3)这里是继承的FrameLayout,但是继承LinearLayout,RelativeLayout等系统布局控件都可以。之所以要继承这些系统现成的ViewGroup,是因为这样可以不用再重写onMeasure,onLayout等,这样省事很多。由于这里是一个布局控件,要用LayoutInflater来填充,所以需要继承ViewGroup,如果继承View的直接子类,编译会不通过。所以,CustomTitleView自己就是一个容器,完全可以当成容器使用,此时CustomTitleView自身的内容会和其作为父布局添加的子控件,效果会叠加,具体的叠加效果是根据继承的容器特性决定的。

3、在Activity的布局文件中添加CustomTitleView。

在Activity的布局文件activity_custom_view_compose_demo.xml中,像使用系统控件一样使用CustomTitleView即可。CustomTitleView自己就是继承的现成的系统布局,所以它们拥有的属性特性,CustomTitleView一样拥有。

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

<com.example.demos.customviewdemo.CustomTitleView

android:id="@+id/customview_title"

android:layout_width="match_parent"

android:layout_height="wrap_content">

</com.example.demos.customviewdemo.CustomTitleView>

</RelativeLayout>

 4、在Activity中操作CustomTitleView,代码如下:

 1 public class CustomViewComposeDemoActivity extends AppCompatActivity { 2  3     private CustomTitleView mCustomTitleView; 4     @Override 5     protected void onCreate(Bundle savedInstanceState) { 6         super.onCreate(savedInstanceState); 7         setContentView(R.layout.activity_custom_view_compose_demo); 8         mCustomTitleView = findViewById(R.id.customview_title); 9         mCustomTitleView.setTittle("This is Title");10         mCustomTitleView.setLeftOnClickListener(new View.OnClickListener() {11             @Override12             public void onClick(View v) {13                 finish();14             }15         });16 17     }18 }

在第8行中,获取到CustomTitleView实例,第9行设置标题文字,第10行自定义“Back”按钮点击事件。

5、效果图

按照如上的4步,就通过组合控件完成了一个比较简单的自定义标题栏。

以上就是小编今天的分享了,希望可以帮助到大家。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:0731-84117792 E-MAIL:11247931@qq.com

文档

android 自定义view

android可以通过组合控件来实现自定义view。组合控件就是将系统原有的控件进行组合,构成一个新的控件。这种方式下,不需要开发者自己去绘制图上显示的内容,也不需要开发者重写onMeasure,onLayout,onDraw方法来实现测量、布局以及draw流程。
推荐度:
标签: android view
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题受权与授权的区别受权与授权的区别专题什么是社会面清零什么是社会面清零专题社会面清零主要做什么社会面清零主要做什么专题什么是中国人民警察节什么是中国人民警察节专题中国人民警察节是哪天中国人民警察节是哪天专题中国人民警察节设立意义中国人民警察节设立意义专题中国人民警察节的由来中国人民警察节的由来专题中国人民警察节祝福语中国人民警察节祝福语专题设立中国人民警察节的原因设立中国人民警察节的原因专题山海经上古三大神木山海经上古三大神木专题c语言心形编程代码c语言心形编程代码专题ifnull函数ifnull函数专题python自动化脚本python自动化脚本专题lte关闭还是开启好lte关闭还是开启好专题python asynciopython asyncio专题es6数组去重es6数组去重专题数组去重的5种方法数组去重的5种方法专题vue prop属性vue prop属性专题100个神话故事的名字100个神话故事的名字专题谐音梗游戏名字谐音梗游戏名字专题一元一次方程教学反思一元一次方程教学反思专题vue兄弟组件之间传值vue兄弟组件之间传值专题python re.matchpython re.match专题idea背景怎么改为白色idea背景怎么改为白色专题vue父子组件通信vue父子组件通信专题js替换所有指定字符串js替换所有指定字符串专题vue父子组件传值vue父子组件传值专题hdb3码编码规则hdb3码编码规则专题df -h命令df -h命令专题统一社会信用代码怎么查统一社会信用代码怎么查专题android中自定义view专题白起图片恋与制作人专题把我这个手机上设置一个自动抢红包的功能专题拔牙拆线注意事项专题白带怎么自我检查专题拔牙创面几天能好专题拔完智齿有什么症状专题拔牙打麻药扁桃体疼喉咙痛专题拔牙不注意会得什么病专题我想吃一个小孩绘本赏析专题白草畔还是百草畔专题拔完智齿发烧了正常吗专题显卡啸叫的最佳处理办法专题拔牙除了打麻药还需要注射其它药吗专题把五米长的绳子平均分成八段每段占全长的专题拔完牙一直很痛怎么办专题patiromer专题拔牙齿会不会肿专题白带有一点点鱼腥味专题白带有乌血专题
Top