本篇文章為大家展示了如何在Android項(xiàng)目中創(chuàng)建一個(gè)自定義控件,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到歙縣網(wǎng)站設(shè)計(jì)與歙縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋歙縣地區(qū)。
1、仿iPhone 的風(fēng)格,在界面的頂部放置一個(gè)標(biāo)題欄。
<?xml version="1.0" encoding="utf-8"?>
標(biāo)題欄布局已經(jīng)編寫完成,剩下的就是如何在程序中使用這個(gè)標(biāo)題欄。
//我們只需要通過一行 include語(yǔ)句將標(biāo)題欄布局引入進(jìn)來(lái)就可以了。
然后在 MainActivity 中將系統(tǒng)自帶的標(biāo)題欄隱藏掉
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); } }
我們還是需要在每個(gè)活動(dòng)中為這些控件單獨(dú)編寫一次事件注冊(cè)的代碼。比如說(shuō)標(biāo)題欄中的返回按鈕,其實(shí)不管是在哪一個(gè)活動(dòng)中,這個(gè)按鈕的功能都是相同的,即銷毀掉當(dāng)前活動(dòng),這種情況最好是使用自定義控件的方式來(lái)解決。
新建自定義的標(biāo)題欄控件:
public class TitleLayout extends LinearLayout { public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); } }
我們重寫了 LinearLayout 中的帶有兩個(gè)參數(shù)的構(gòu)造函數(shù),在布局中引入 TitleLayout控件就會(huì)調(diào)用這個(gè)構(gòu)造函數(shù)。然后在構(gòu)造函數(shù)中需要對(duì)標(biāo)題欄布局進(jìn)行動(dòng)態(tài)加載,這就要借助 LayoutInflater 來(lái)實(shí)現(xiàn)了。通過 LayoutInflater 的 from()方法可以構(gòu)建出一個(gè) LayoutInflater對(duì)象,然后調(diào)用 inflate()方法就可以動(dòng)態(tài)加載一個(gè)布局文件,inflate()方法接收兩個(gè)參數(shù),第一個(gè)參數(shù)是要加載的布局文件的 id,這里我們傳入 R.layout.title,第二個(gè)參數(shù)是給加載好的布局再添加一個(gè)父布局,這里我們想要指定為 TitleLayout,于是直接傳入this
在布局文件中添加這個(gè)自定義控件
我們來(lái)嘗試為標(biāo)題欄中的按鈕注冊(cè)點(diǎn)擊事件,修改 TitleLayout中的代碼
public class TitleLayout extends LinearLayout { public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); Button titleBack = (Button) findViewById(R.id.title_back); Button titleEdit = (Button) findViewById(R.id.title_edit); titleBack.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((Activity) getContext()).finish(); } }); titleEdit.setOnClickListener(new OnClickListener() { public static final String TAG = ""; @Override public void onClick(View v) { Toast.makeText(getContext(), "重新運(yùn)行程序", Toast.LENGTH_SHORT).show(); Log.i(TAG, "111 "); } }); } }
上述內(nèi)容就是如何在Android項(xiàng)目中創(chuàng)建一個(gè)自定義控件,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。