溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

簡單的自定義小控件,復(fù)用標題欄

發(fā)布時間:2020-07-18 20:09:16 來源:網(wǎng)絡(luò) 閱讀:453 作者:老司基 欄目:移動開發(fā)

    一般情況下actionBar我都會隱藏掉,自己定義一個標題欄來用,一為了方便,二是如果用系統(tǒng)的actionbar來實現(xiàn)同樣的效果,很復(fù)雜。

簡單的寫一個例子

簡單的自定義小控件,復(fù)用標題欄

相當(dāng)簡單的一個東西,一般情況向在布局的最上端include一下就好了,很久以前我也這么做,但是如果倆邊的圖片想換一下呢?中間的文字想換一下呢?再寫一個布局include么?顯然不能,只能自定義這個空間了。

步驟

<1>把布局寫出來,自己想加?xùn)|西就加點東西

<?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="60dp"
   android:paddingTop="15dp"
   android:paddingBottom="15dp"
   android:background="#FFFCCB4B">
   <ImageView
       android:id="@+id/titleui_left"
       android:layout_width="20dp"
       android:layout_height="20dp"
       android:layout_alignParentLeft="true"
       android:layout_centerVertical="true"
       android:layout_marginLeft="25dp"
       />
   <TextView
       android:id="@+id/titleui_tv"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textColor="#2b2b2b"
       android:textSize="25sp"
       android:layout_centerInParent="true"
       />
   <ImageView
       android:id="@+id/titleui_right"
       android:layout_width="20dp"
       android:layout_height="20dp"
       android:layout_alignParentRight="true"
       android:layout_centerVertical="true"
       android:layout_marginRight="25dp"
       />
</RelativeLayout>

<2>自定義控件,重寫三個構(gòu)造

titleUi RelativeLayout {

    ImageView ImageView TextView String =String titleUi(Context context) {
       (context)}

    titleUi(Context contextAttributeSet attrs) {
        (contextattrs)}

    titleUi(Context contextAttributeSet attrsdefStyleAttr) {
        (contextattrsdefStyleAttr)

<3>在第三個構(gòu)造中把布局添加到控件中,addView()這個方法就是干這個事的

titleUi(Context contextAttributeSet attrsdefStyleAttr) {
    (contextattrsdefStyleAttr)View inflate = View.(contextR.layout.)addView(inflate)= (ImageView) findViewById(R.id.)= (ImageView)findViewById(R.id.)= (TextView)findViewById(R.id.)getAttrs(attrs)}

<4>然后我們想到要在代碼中設(shè)置圖標的樣式,怎們做呢?在Values中新建attrs,然后自定義屬性,

非常簡單,我這里就簡單的定義了幾個屬性,你也可以定義很多,比如backgroud,textcolor等等,

<declare-styleable name="titleUi">
<attr name="p_w_picpathleft" format="reference"/>
<attr name="p_w_picpathright" format="reference"/>
<attr name="titletext" format="string"/>
</declare-styleable>

<5>定義了屬性就要使用這個屬性了,在布局文件中直接使用,比如這樣

<naiweiyin.zhiyun.com.myapplication.View.UI.titleUi
   android:id="@+id/tianjiaqianzaixueyuan_bar"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   app:titletext="添加潛在學(xué)員"
   app:p_w_picpathleft="@mipmap/fanhui"
   app:p_w_picpathright="@mipmap/yes">
</naiweiyin.zhiyun.com.myapplication.View.UI.titleUi>

<6>然后這樣還不行,要在代碼中拿到我們自定義的屬性才可以真正的使用,不然沒有用,像這樣就可以拿到我們的屬性了,然后把它設(shè)置給我們的p_w_picpathView和TextView。

(AttributeSet attrs) {
    = attrs.getAttributeValue()= attrs.getAttributeResourceValue(R.mipmap.)= attrs.getAttributeResourceValue().setText().setImageResource().setImageResource()}

<7>然后我們就要在代碼中設(shè)置圖標的點擊事件,和text的內(nèi)容了,提供三個方法完成這個事情,這樣就可以在activity中更具業(yè)務(wù)設(shè)置了

(OnClickListener onclick){
    .setOnClickListener(onclick)}
(OnClickListener onclick){
    (==){
        .setOnClickListener()}{
        .setOnClickListener(onclick)}
}
(String s){
    .setText(s)}

很簡單的一個控件就寫好了,我們還可以加很多東西來提高它的擴展性,不過一般這樣的一個標題欄也時足夠用了。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI