android(android怎么自定义view)

作者:百科火  更新 :2022-03-10 10:20:11   科技百科  

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

android(android怎么自定义view)

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个插口,一是动态性设定文章标题,二是使用人可以自定返回按钮的点击事件。

(2)CustomTitleView的构造方法,要挑选2个主要参数的,挑选其他主要参数的构造方法会出错。这一点是小编开发设计机检测的結果,临时不清楚是否全部手机全是那样。

(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步,就根据组合控件完成了一个较为简单的自定标题栏。

以上便是我现在的共享了,期待可以作用到大伙儿。

- END -

mcg是什么单位

mcg是什么单位

一般东西都是有单位,不同领域里面所表示单位都不相同。我们常见mcg是什么单位呢?下面来给大家具体的介绍一下。...

arcsinx等于什么?(01arcsinx)

arcsinx等于什么?(01arcsinx)

01arcsinx=&pi;/2-arccosx(-1≦x≦1)。arcsin0=0,arcsin1=90&deg;。sinx表明一个数据,在其中的x是一个视角。arcsinx表...

大宗商品是指哪些(大宗商品主要包括3个类别)

大宗商品是指哪些(大宗商品主要包括3个类别)

大宗商品主要包括3个类别,即能源商品、基础原材料和农副产品。农副产品有郑油、鸡蛋、豆粕、棕榈、白糖、菜籽、苹...

什么是安吉游戏(简单的幼儿园游戏有哪些)

什么是安吉游戏(简单的幼儿园游戏有哪些)

什么是安吉游戏,安吉游戏是安吉幼儿园游戏教育的简称,安吉游戏是由安吉县的教育生态,改革探索出的一种一游戏教育为主...

1mm等于多少厘米(几何量计量又称长度计量)

1mm等于多少厘米(几何量计量又称长度计量)

1mm(毫米)=0.1厘米(cm)10毫米相当于1厘米,100毫米相当于1分米,1000毫米相当于1米(此即为毫的字义)。英文缩写mm(或 毫米...

10磅等于多少斤(10磅(lb) = 9)

10磅等于多少斤(10磅(lb) = 9)

1、10磅(lb) = 9.0718474斤2、磅(英语: pound)是英国与美国所使用的英制质量单位,简写是lb.3、历史上经过多年的演...

李宗瑞继母梁婖婷本人照片,长得好看却被继子并怀孕

李宗瑞继母梁婖婷本人照片,长得好看却被继子并怀孕

当年李宗瑞案绝对是最轰动的时间,不仅出现月事妹这种特殊存在,还有一个特殊人物就是李宗瑞继母梁婖婷,当然你只看到文...

国家大选几年一次(我国下一次大选是2027年)

国家大选几年一次(我国下一次大选是2027年)

根据《宪法》规定,中华人民共和国主席每届任期同全国人民代表大会每届任期相同,全国人民代表大会每届任期五年,由全国...

扬州是几线城市(2022中国城市等级划分)

扬州是几线城市(2022中国城市等级划分)

根据最新的2017中国城市等级划分,扬州市是三线城市。所以说扬州是二线城市或者三线城市都可以。但2017中国城市等级...

左肖是哪几肖(十二生肖排序的三种不同说法)

左肖是哪几肖(十二生肖排序的三种不同说法)

左肖:鼠牛龙蛇猴鸡右肖:虎兔马羊狗猪十二生肖,又叫属相,是中国与十二地支相配以人出生年份的十二种动物,包括鼠、牛、虎...

查看更多知识百科