国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

android 自定義view

來源:懂視網(wǎng) 責(zé)編:李贏贏 時間:2021-12-30 16:15:15
文檔

android 自定義view

android可以通過組合控件來實(shí)現(xiàn)自定義view。組合控件就是將系統(tǒng)原有的控件進(jìn)行組合,構(gòu)成一個新的控件。這種方式下,不需要開發(fā)者自己去繪制圖上顯示的內(nèi)容,也不需要開發(fā)者重寫onMeasure,onLayout,onDraw方法來實(shí)現(xiàn)測量、布局以及draw流程。
推薦度:
導(dǎo)讀android可以通過組合控件來實(shí)現(xiàn)自定義view。組合控件就是將系統(tǒng)原有的控件進(jìn)行組合,構(gòu)成一個新的控件。這種方式下,不需要開發(fā)者自己去繪制圖上顯示的內(nèi)容,也不需要開發(fā)者重寫onMeasure,onLayout,onDraw方法來實(shí)現(xiàn)測量、布局以及draw流程。

android怎么自定義view呢?不知道的小伙伴來看看小編今天的分享吧!

android可以通過組合控件來實(shí)現(xiàn)自定義view。組合控件就是將系統(tǒng)原有的控件進(jìn)行組合,構(gòu)成一個新的控件。這種方式下,不需要開發(fā)者自己去繪制圖上顯示的內(nèi)容,也不需要開發(fā)者重寫onMeasure,onLayout,onDraw方法來實(shí)現(xiàn)測量、布局以及draw流程。

具體操作:

1、定義標(biāo)題欄布局文件

 定義標(biāo)題欄的布局文件custom_title_view.xml,將返回按鈕和標(biāo)題文本進(jìn)行組合。這一步用于確定標(biāo)題欄的樣子,代碼如下所示:

<?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、根據(jù)給定布局實(shí)現(xiàn)自定義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)代碼中對外提供了兩個接口,一是動態(tài)設(shè)置標(biāo)題,二是使用者可以自定義返回按鈕的點(diǎn)擊事件。

(2)CustomTitleView的構(gòu)造函數(shù),要選擇兩個參數(shù)的,選擇其它參數(shù)的構(gòu)造函數(shù)會報錯。這一點(diǎn)是筆者開發(fā)機(jī)測試的結(jié)果,暫時不清楚是不是所有手機(jī)上都是這樣。

(3)這里是繼承的FrameLayout,但是繼承LinearLayout,RelativeLayout等系統(tǒng)布局控件都可以。之所以要繼承這些系統(tǒng)現(xiàn)成的ViewGroup,是因?yàn)檫@樣可以不用再重寫onMeasure,onLayout等,這樣省事很多。由于這里是一個布局控件,要用LayoutInflater來填充,所以需要繼承ViewGroup,如果繼承View的直接子類,編譯會不通過。所以,CustomTitleView自己就是一個容器,完全可以當(dāng)成容器使用,此時CustomTitleView自身的內(nèi)容會和其作為父布局添加的子控件,效果會疊加,具體的疊加效果是根據(jù)繼承的容器特性決定的。

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

在Activity的布局文件activity_custom_view_compose_demo.xml中,像使用系統(tǒng)控件一樣使用CustomTitleView即可。CustomTitleView自己就是繼承的現(xiàn)成的系統(tǒng)布局,所以它們擁有的屬性特性,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實(shí)例,第9行設(shè)置標(biāo)題文字,第10行自定義“Back”按鈕點(diǎn)擊事件。

5、效果圖

按照如上的4步,就通過組合控件完成了一個比較簡單的自定義標(biāo)題欄。

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

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

android 自定義view

android可以通過組合控件來實(shí)現(xiàn)自定義view。組合控件就是將系統(tǒng)原有的控件進(jìn)行組合,構(gòu)成一個新的控件。這種方式下,不需要開發(fā)者自己去繪制圖上顯示的內(nèi)容,也不需要開發(fā)者重寫onMeasure,onLayout,onDraw方法來實(shí)現(xiàn)測量、布局以及draw流程。
推薦度:
標(biāo)簽: android view
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 91精品久久久久久久久久 | 国产在线视频一区二区三区 | 亚洲图片欧美日韩 | 成人国产一区二区 | 国内高清久久久久久久久 | 国产一级一片免费播放视频 | 欧美日韩无| 久久久国产麻豆 | 美女一级a毛片免费观看 | 精品国产91久久久久 | 亚洲精品乱码久久久久久v 亚洲精品免费观看 | 在线国产观看 | 精品一区二区在线 | 最新国产网站 | 国产九区| 日韩欧美三级视频 | 99久久成人国产精品免费 | 久久无码精品一区二区三区 | 国产成人综合精品一区 | 91精品一区二区三区久久久久 | 伊人精品成人久久综合欧美 | 欧美高清第一页 | 久久亚洲一级α片 | 久久国产精品电影 | 日本国产最新一区二区三区 | 国产精品久久久久国产精品 | 国产精品亚洲精品不卡 | 久久免费精品国产72精品剧情 | 国产成人精品aaaa视频一区 | 国产伦精品一区二区三区视频小说 | 中文字幕欧美在线观看 | 日韩国产另类 | 婷婷爱爱| 亚洲午夜视频 | 欧美人与动性xxxxx杂性 | 国产精品久久久久免费 | 一区二区三区四区电影 | 亚洲专区欧美 | 不卡一区二区三区四区 | 久久久久久久99久久久毒国产 | 最新亚洲|