一起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中使用自定義控制元件的例子咱們就介紹到這裡,欲知後面還有什麼例子,且聽下回分解!