標籤:
0.假設一個應用中標題列控制項都是共用的,如果每個activity都需要設定button,Binder 方法,那代碼就會很臃腫。那我們可以自訂控制項,然後繼承這個控制項就行了。
自訂控制項為TitleLayout,LayoutInflater.from(context).inflate(R.layout.title,this);可以實現動態載入。LayoutInflater是用來找res/layout/下的xml布局檔案,並且執行個體化的,類似於findViewById(),但是findViewById找的是xml布局檔案下的具體widget控制項(如Button、TextView等)。
1.控制項實現
public class TitleLayout extends LinearLayout implements View.OnClickListener { 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(this); titleEdit.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.title_back: ((Activity) getContext()).finish(); break; case R.id.title_edit: Toast.makeText(getContext(),"you click this button",Toast.LENGTH_SHORT).show(); break; } }}
2.控制項引用
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="1"> <activitytest.example.com.uiwidgettest.TitleLayout android:layout_width="match_parent" android:layout_height="wrap_content"></activitytest.example.com.uiwidgettest.TitleLayout></LinearLayout>
android第一行代碼-6.自訂控制項的實現