1. 程式人生 > >一起Talk Android吧(第一百回:Android中使用自定義控制元件)

一起Talk Android吧(第一百回:Android中使用自定義控制元件)

各位看官們,大家好,上一回中咱們說的是Android中使用自定義佈局的例子,這一回說的例子是Android中使用自定義控制元件。閒話休提,言歸正轉。讓我們一起Talk Android吧!

看官們,我們在上一回中通過自定義佈局巧妙地實現了分隔線,不過這個分隔線中看不中用?簡直就是個花瓶。為什麼這麼說呢?因為它只能顯示一個分隔線,沒有任何事件處理能力。接下來我們將介紹如何給自定義的佈局新增事件處理能力,這也是本章回的主要內容:自定義控制元件

  • 1.新建一個類:DIYDivider,它繼承自LinearLayout,程式碼如下:

    public class DIYDivider extends LinearLayout { // 類中的內容先省略 }

  • 2.重寫該類的建構函式:

    public DIYDivider(Context context, AttributeSet attrs) { super(context, attrs); }

  • 3.在該類的建構函式中把自己定義的佈局載入進來:

    LayoutInflater.from(context).inflate(R.layout.line,this);

    //這裡的line佈局是上一章回中自定義的佈局

  • 4.在建構函式中為控制元件新增事件處理,我們新增的是Touch事件:

    mTextView.setOnTouchListener();

為了看官們看的清楚些,下面是完成的程式碼:

public class DIYDivider extends LinearLayout {  //步驟1
    private TextView mTextView = null;

    public DIYDivider(Context context, AttributeSet attrs) {  //步驟2
        super(context, attrs);
         LayoutInflater.from(context).inflate(R.layout.line,this);  //步驟3

        mTextView = (TextView)findViewById(R.id.id_line);  //步驟4
        mTextView.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                mTextView.setBackgroundColor(getResources().getColor(R.color.colorBlue));
                return false;
            }
        });
    }
} 

自定義控制元件到此就完成了,我們只需要在主Activity的佈局中新增它就可以,新增方法如下:

<com.example.talk8.blogapp003.DIYDivider android:layout_width=“match_parent” android:layout_height=“wrap_content”>

</com.example.talk8.blogapp003.DIYDivider>

同時把<include layout="@layout/line"></include>刪除掉,這是自定義佈局的時候才使用。

看官們,我們是在上一回內容的基礎上進行的,因此直接使用了上一回中自定義的佈局。而且主Activity也沒有變。在程式碼中我們為分隔線新增Touch事件,當觸控分隔線的時候它的顏色會從綠色變成藍色。大家可以自己試試,我們就不展示了。

各位看官,關於Android中使用自定義控制元件的例子咱們就介紹到這裡,欲知後面還有什麼例子,且聽下回分解!