日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例

發布時間:2025/3/15 Android 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時候,可能覺得系統提供的控件太丑,就會需要自定義控件來實現自己想要的效果。

以下主要參考《第一行代碼》

1.自定義一個標題欄:

系統自帶的標題欄很丑,且沒什么大的作用,所以我們之前會在onCreate()中調用requestWindowFeature(Window.FEATURE_NO_TITLE);設置不顯示標題欄。

下面自定義一個標題欄,中間顯示標題,左右各有一個按鈕:

title.xml:

1 <?xml version="1.0" encoding="utf-8"?> 2 3 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 5 android:layout_width="match_parent" 6 7 android:layout_height="wrap_content" 8 9 android:orientation="horizontal" 10 11 android:background="#bbbbbb" > 12 13 <Button 14 15 android:id="@+id/btn_back" 16 17 android:text="@string/back" 18 19 android:layout_width="wrap_content" 20 21 android:layout_height="wrap_content" 22 23 android:layout_margin="5dp" 24 25 android:layout_gravity="left|center_vertical" 26 27 android:textColor="#0099cc" 28 29 android:layout_weight="1"/> 30 31 <TextView 32 33 android:id="@+id/title" 34 35 android:layout_width="wrap_content" 36 37 android:layout_height="wrap_content" 38 39 android:textSize="20sp" 40 41 android:textColor="#0099cc" 42 43 android:text="@string/this_is_title" 44 45 android:layout_gravity="center" 46 47 android:gravity="center" 48 49 android:layout_weight="2"/> 50 51 <Button 52 53 android:id="@+id/btn_edit" 54 55 android:layout_width="wrap_content" 56 57 android:layout_height="wrap_content" 58 59 android:text="@string/edit" 60 61 android:layout_margin="5dp" 62 63 android:layout_gravity="right|center_vertical" 64 65 android:textColor="#0099cc" 66 67 android:layout_weight="1"/> 68 69 </LinearLayout>

?Activity代碼:

1 protected void onCreate(Bundle savedInstanceState) { 2 3 super.onCreate(savedInstanceState); 4 5 requestWindowFeature(Window.FEATURE_NO_TITLE); 6 7 setContentView(R.layout.title); 8 9 }

?運行結果:

?

(⊙o⊙)…有點丑哈,不過仔細看,還是有點像標題欄的。

2.復用布局代碼:

想讓這個標題欄應用在以后的每個布局文件,要怎么做呢?

總不能每次都把這些xml代碼重寫一遍吧。

android布局中提供了類似于c預處理指令#include的<include>標簽,可以實現布局代碼的復用。

下面新建一個first_layout.xml:

1 <?xml version="1.0" encoding="utf-8"?> 2 3 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 5 android:layout_width="match_parent" 6 7 android:layout_height="match_parent" 8 9 android:orientation="vertical" > 10 11 <include layout="@layout/title"/> 12 13 <Button android:id="@+id/btn" 14 15 android:text="@string/i_m_a_button" 16 17 android:layout_width="wrap_content" 18 19 android:layout_height="wrap_content" 20 21 android:layout_gravity="center_horizontal"/> 22 23 </LinearLayout>

?修改setContentView(R.layout.first_layout);

顯示結果:

?

現在Back和Edit按鈕都沒有任何事件處理的,怎樣實現點擊Back按鈕就結束當前Activity呢?方法跟之前的做法完全一樣,使用findViewById()根據id找到Back按鈕,然后設置click事件監聽即可。

代碼如下:

1 public class FirstActivity extends Activity { 2 3 @Override 4 5 protected void onCreate(Bundle savedInstanceState) { 6 7 super.onCreate(savedInstanceState); 8 9 requestWindowFeature(Window.FEATURE_NO_TITLE); 10 11 setContentView(R.layout.first_layout); 12 13 Button btn = (Button) findViewById(R.id.btn_back); 14 15 btn.setOnClickListener(new OnClickListener() { 16 17 @Override 18 19 public void onClick(View v) { 20 21 // TODO Auto-generated method stub 22 23 FirstActivity.this.finish(); 24 25 } 26 27 }); 28 29 } 30 31 }

?

布局文件的復用已然通過<include>實現了,但是每次都要重新寫事件監聽,還是覺得麻煩……到這里一般就會想到抽象出一個自定義類,每次需要的時候,直接使用該自定義類不就行了,其實就是自定義控件的做法了。

3.自定義控件,復用功能代碼

TitleLinearLayout.java代碼:

1 public class TitleLinearLayout extends LinearLayout { 2 3 public TitleLinearLayout(Context context, AttributeSet attrs) { 4 5 super(context, attrs); 6 7 LayoutInflater.from(context).inflate(R.layout.title, this); 8 9 Button btn_back = (Button) findViewById(R.id.btn_back); 10 11 btn_back.setOnClickListener(new OnClickListener() { 12 13 @Override 14 15 public void onClick(View v) { 16 17 // TODO Auto-generated method stub 18 19 Log.i("clicked","back"); 20 21 ((Activity)getContext()).finish(); 22 23 } 24 25 }); 26 27 } 28 29 }

?繼承自LinearLayout,實現帶兩個參數的構造方法。在構造方法中,加載布局文件,并對其中的Back按鈕進行事件監聽設置。

LayoutInflater.from(context).inflate(R.layout.title, this);用于動態加載布局文件。

注意到,Activity中有一個獲取LayoutInflater的方法,所以,也可以使用下面一行代碼加載布局文件:

((Activity)context).getLayoutInflater().inflate(R.layout.title, this);這種方法,在Activity代碼中比較常用,而這里需要進行類型強轉,反倒麻煩點,而且不如第一個方法安全。

如何使用自定義的控件呢?

first_layout代碼如下:

1 <?xml version="1.0" encoding="utf-8"?> 2 3 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 5 android:layout_width="match_parent" 6 7 android:layout_height="match_parent" 8 9 android:orientation="vertical" > 10 11 <cn.csc.custom_ui.TitleLinearLayout 12 13 android:layout_width="match_parent" 14 15 android:layout_height="wrap_content"> 16 17 </cn.csc.custom_ui.TitleLinearLayout> 18 19 <Button android:id="@+id/btn" 20 21 android:text="@string/i_m_a_button" 22 23 android:layout_width="wrap_content" 24 25 android:layout_height="wrap_content" 26 27 android:layout_gravity="center_horizontal"/> 28 29 </LinearLayout>

說明:

1)在布局文件中,引用自定義的控件,需要使用完整的類限定名,即包名.類名的方式;

2)在定義控件中,設置屬性時,使用alt+/進行代碼提示補全功能將經常不可用,標簽名可以先設置為內置控件,然后進行屬性的設置,之后再把標簽名改回到自定義的控件的完整限定名即可。

?

轉載于:https://www.cnblogs.com/dqrcsc/p/4618814.html

總結

以上是生活随笔為你收集整理的android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品一区在线免费观看 | 97在线观看免费视频 | 国产中文字幕乱人伦在线观看 | 日本久久片 | 亚州av在线 | 亚洲青草| 久久99这里只有精品 | 国产无套内射又大又猛又粗又爽 | 欧洲成人午夜精品无码区久久 | 少妇视频一区 | 欧美精品一二三四 | 色综合天天综合 | 精品亚洲一区二区三区四区五区高 | 亚洲午夜精品久久久久久app | 日韩视频在线免费播放 | 青少年xxxxx性开放hg | 精品国产1区2区 | www.在线播放 | 天天操天天操天天 | 动漫av一区二区 | 国产精品毛片 | 三级国产视频 | www.国产视频.com | 秋霞成人午夜伦在线观看 | 欧美精品123 | 午夜成人影视 | 天天夜碰日日摸日日澡性色av | 国产性生活一级片 | 国产免费视屏 | 国产无 | 中文av一区二区三区 | av视屏在线 | 黄色裸体网站 | 亚洲精品白浆高清久久久久久 | 亚洲av无码久久精品狠狠爱浪潮 | 欧美最黄视频 | 韩国av三级 | 在线国产区 | 国产高清一区在线观看 | 中文字幕视频网站 | 大毛片| 特级毛片爽www免费版 | 快播久久| 自慰无码一区二区三区 | 好爽又高潮了毛片 | 哺乳期给上司喂奶hd | 黄视频在线观看免费 | 午夜激情一区二区 | a级欧美 | 日韩av在线免费观看 | 操网站 | av三级在线播放 | av漫画在线观看 | 日韩 国产 欧美 | 特大黑人巨交性xxxx | 一级性生活黄色片 | 五月激情六月丁香 | 日韩在线一卡二卡 | 一级片在线观看视频 | 国产精品高潮呻吟久久aⅴ码 | 熟妇人妻久久中文字幕 | 色老久久 | 日本精品久久久久久 | 中文字幕一区二区av | 一本加勒比波多野结衣 | 国产女主播福利 | 色综合天天综合网国产成人网 | 日本理论片中文字幕 | 亚洲成人av在线 | 日本顶级大片 | av黄在线 | 久久精品国产亚洲av久一一区 | 亚洲一区二区三区四区五区午夜 | 久久午夜福利电影 | 一区二区成人免费视频 | 久久久免费网站 | av一区二区三 | 激情午夜网 | www国产成人 | 五月激情在线观看 | 天天干影院 | 中文有码在线播放 | 熟女肥臀白浆大屁股一区二区 | 久久久久人妻精品色欧美 | 天天艹天天 | 婷婷深爱激情 | 欧美乱轮视频 | 天天操狠狠操夜夜操 | 精品一区二区三区免费视频 | 69视频免费观看 | 黑人黄色一级片 | 在线免费观看黄色小视频 | 在线观看免费毛片 | 制服丝袜亚洲色图 | 国产精品久久久久久久久 | 欧美射射| av男女 | 老司机一区 | 亚洲第一色网 |