自定義頂部標題欄和其事件監聽設定
阿新 • • 發佈:2019-01-31
iOS系統上方的工具欄很漂亮,也很實用,下面讓我們來仿製一下吧。
首先新建一個佈局檔案title.xml:
<?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="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/title_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="5sp" android:background="@drawable/back_bg" android:text="Back" /> <TextView android:id="@+id/title_text" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" android:gravity="center" android:text="Title Text" android:textSize="24sp" android:background="@drawable/edit_bg" /> <Button android:id="@+id/title_edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="5sp" android:text="Edit" android:background="@drawable/edit_bg"/> </LinearLayout>
新建一個class--TitleLayout繼承自LinearLayout,讓它成為我們自定義的標題欄控制元件,程式碼如下:
package org.lxh.demo; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.LinearLayout; public class TitleLayout extends LinearLayout { public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); } }
然後將我們自定義的控制元件加入到main.xml檔案中:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@android:color/white"> <org.lxh.demo.TitleLayout android:layout_width="match_parent" android:layout_height="wrap_content" > </org.lxh.demo.TitleLayout> </LinearLayout>
執行例項如下:
樣子是實現了,下面我們嘗試加入一些事件的監聽操作,修改TitleLayout.java程式碼:
package org.lxh.demo;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class TitleLayout extends LinearLayout {
private Context mContext;
public TitleLayout(Context context, AttributeSet attrs) {
super(context, attrs);
mContext=context;
LayoutInflater.from(context).inflate(R.layout.title, this);
Button titleBackButton=(Button)findViewById(R.id.title_back);
Button titleEdit=(Button)findViewById(R.id.title_edit);
titleBackButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
((Activity) mContext).finish();
}
});
titleEdit.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Toast.makeText(mContext, "titleEdit 事件!", Toast.LENGTH_SHORT).show();
}
});
}
}
執行例項:
喜歡的朋友可以關注我!另我的應用下載地址: