android自定义View之(七)------自定义控件组合仿actionbar控件
来源:互联网 发布:如何评价英雄联盟知乎 编辑:程序博客网 时间:2024/05/14 03:08
我们前面写了6个自定义view的样例,这都是全新自已画的控件。在这个样例中,我们来用几个现有的控件来组合成一个新的控件。
效果图:
我们用二个Button和一个TextView组合来成为一个actionbar,下面先来一个效果图:
关键代码:
(1)res/layout/custom_action_bar.xml----组合控件布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:id="@+id/button_ok" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button_ok_click"android:layout_alignParentLeft="true"/> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:visibility="gone" /> <Button android:id="@+id/button_no" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button_no_click" android:layout_alignParentRight="true"/></RelativeLayout>
(2)CustomActionbar.java------自定义组合控件
import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.RelativeLayout;import android.widget.TextView;public class CustomActionbar extends RelativeLayout{private Button button_ok;private Button button_no;private TextView title;private ActionbarClickedListener actionbarClickedListener;public CustomActionbar(Context context) { this(context, null); } public CustomActionbar(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CustomActionbar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); LayoutInflater.from(context).inflate(R.layout.custom_action_bar, this, true); } protected void onFinishInflate() { super.onFinishInflate(); button_ok = (Button) findViewById(R.id.button_ok); button_ok.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {// TODO Auto-generated method stub if (actionbarClickedListener != null) { actionbarClickedListener.onActionbarOKClicked(); }}}); button_no = (Button) findViewById(R.id.button_no); button_no.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {// TODO Auto-generated method stub if (actionbarClickedListener != null) { actionbarClickedListener.onActionbarCancelClicked(); }}}); title = (TextView) findViewById(R.id.title); } public void setTitle(int resId){ title.setText(resId); title.setVisibility(View.VISIBLE); } public void setActionbarClickedListener(ActionbarClickedListener actionbarClickedListener){ this.actionbarClickedListener = actionbarClickedListener; } public interface ActionbarClickedListener { public void onActionbarOKClicked(); public void onActionbarCancelClicked(); }}
(3)res/layout/activity_main.xml-------主文件布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.example.customviewactionbar.CustomActionbar
android:id="@+id/customActionbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
(4)MainActivity.java-----主文件
import com.example.customviewactionbar.CustomActionbar.ActionbarClickedListener;import android.os.Bundle;import android.app.Activity;import android.util.Log;public class MainActivity extends Activity implements ActionbarClickedListener{public static final String TAG ="CustomActionbar";private CustomActionbar customActionbar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init() {// TODO Auto-generated method stubcustomActionbar = (CustomActionbar) findViewById(R.id.customActionbar);customActionbar.setActionbarClickedListener(this);//customActionbar.setTitle(getResources().getText(R.string.hello_world));customActionbar.setTitle(R.string.hello_world);}@Overridepublic void onActionbarOKClicked() {// TODO Auto-generated method stubLog.i(TAG,"click_ok");}@Overridepublic void onActionbarCancelClicked() {// TODO Auto-generated method stubLog.i(TAG,"click_cancel");finish();}}
组合控件自定义view总结:
1.自定义组合控件得到想要的控件
2.自定义控件,导入布局文件,实现自已想要控件
3.在其它布局文件中使用
源码下载:
http://download.csdn.net/detail/hfreeman2008/8421039
参考资料:
1.Android软件开发之 自定义控件
http://blog.csdn.net/jackhenry/article/details/7340474
2.android - 自定义(组合)控件 + 自定义控件外观
http://www.cnblogs.com/bill-joy/archive/2012/04/26/2471831.html
3.Android UI开发详解之模板控件的复用
http://blog.csdn.net/eclipsexys/article/details/8681353
- android自定义View之(七)------自定义控件组合仿actionbar控件
- 自定义View之组合控件
- 自定义View之组合控件
- 自定义View之组合控件
- 自定义View之组合控件
- Android 自定义组合控件View
- android:自定义view--组合控件
- 自定义View之组合自定义控件
- Android自定义View 自定义组合控件
- Android自定义View----1. 自定义组合控件
- Android自定义控件之自定义组合控件
- Android 自定义控件之自定义组合控件
- Android自定义控件之自定义组合控件
- 自定义View组合控件
- 自定义View---自定义组合控件
- Android自定义View之高仿卫星发散控件
- Android之自定义组合控件
- [自定义view]Android实战技巧之组合控件
- 关于python中的setup.py(转)
- VC++6.0编译系统的使用
- LeetCode Search in Rotated Sorted Array II
- 【2015.02.02】java的工作方式
- 通过Activity的ViewGroup添加ProgressBar
- android自定义View之(七)------自定义控件组合仿actionbar控件
- Hardwood Species——物种所占比例
- parent 父窗体
- Tcp可靠Udp不可靠原理
- android 电话来电、去电广播
- 自己动手(一)──可拖动排序的 ListView(2)
- oracle中的日志文件模式
- 我的简历
- Java异常学习笔记(四)