<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        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:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        android 自定義view

        android可以通過組合控件來實現自定義view。組合控件就是將系統原有的控件進行組合,構成一個新的控件。這種方式下,不需要開發者自己去繪制圖上顯示的內容,也不需要開發者重寫onMeasure,onLayout,onDraw方法來實現測量、布局以及draw流程。
        推薦度:
        標簽: android view
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 99在线热视频只有精品免费| www成人免费观看网站| 亚洲欧洲国产综合AV无码久久| 久久久久亚洲av无码专区喷水| 亚洲网站免费观看| 99999久久久久久亚洲| 亚洲AV无码专区亚洲AV桃| 无码AV动漫精品一区二区免费| 国产线视频精品免费观看视频| 人人玩人人添人人澡免费| 久久福利资源网站免费看| 国产人妖ts在线观看免费视频| 亚洲国产成人爱av在线播放| 亚洲中文字幕无码一久久区| 亚洲精品福利在线观看| 亚洲av无码一区二区三区四区| 免费无码国产在线观国内自拍中文字幕| 中文字幕手机在线免费看电影| 99精品视频免费在线观看| 97无码免费人妻超级碰碰夜夜| 免费中文字幕在线观看| 亚洲AV日韩精品久久久久久| 亚洲免费一级视频| 未满十八私人高清免费影院| 中文字幕在线观看免费视频| 日韩高清在线高清免费| 黑人精品videos亚洲人| 2020国产精品亚洲综合网| 一级毛片一级毛片免费毛片| 最近2019中文字幕免费大全5 | 97在线视频免费公开视频| 亚洲精品视频免费看| 国产精品深夜福利免费观看| 国产亚洲真人做受在线观看| 亚洲免费福利在线视频| 两性色午夜免费视频| 成人免费视频小说| 国产亚洲精品资源在线26u| 亚洲综合欧美色五月俺也去| 中国好声音第二季免费播放| 毛片在线看免费版|