【安卓笔记】自定义view之组合控件
来源:互联网 发布:新浪云绑定域名 编辑:程序博客网 时间:2024/06/05 07:22
组合控件即将若干个系统已有的控件组合到一块形成一个组合控件,比如带返回按钮的标题栏就是一个最简单的组合控件。
使用组合控件的好处是提高代码的复用性,一处定义多处使用。
下面我们将使用组合控件实现这样的效果:
首先,我们需要自定义一个view:
package com.example.widgets;import android.app.Activity;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.FrameLayout;import android.widget.ImageButton;import android.widget.TextView;import com.example.viewdemo4.R;/** * @author Rowand jj *自定义标题栏组件 */public class TitleBar extends FrameLayout implements OnClickListener{ private ImageButton ib_ret = null; private TextView tv_show = null; public TitleBar(Context context) { super(context); } public TitleBar(Context context, AttributeSet attrs) { super(context, attrs, 0); LayoutInflater inflater = LayoutInflater.from(context); inflater.inflate(R.layout.title, this);//需要指定填充的xml布局文件以及根视图 ib_ret = (ImageButton) findViewById(R.id.ib_ret); tv_show = (TextView) findViewById(R.id.tv_show); ib_ret.setOnClickListener(this); } @Override public void onClick(View v) { if (this.getContext() instanceof Activity) { Activity a = (Activity) this.getContext(); a.finish(); } } public void setTitleText(CharSequence text) { this.tv_show.setText(text); } public void setLeftButListener(OnClickListener listener) { this.ib_ret.setOnClickListener(listener); }}在这个自定义view中,我们使其加载一个我们自定义的布局,该布局如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" android:background="#ff0000" > <TextView android:id="@+id/tv_show" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textSize="20sp" android:textColor="#fff" android:text="@string/title" /> <ImageButton android:id="@+id/ib_ret" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/title_ret_selector" android:layout_centerVertical="true" /></RelativeLayout>左侧按钮的背景是一张图片,引用的是一个selector文件:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/navigation_previous_item"> </item> <item android:drawable="@drawable/navigation_previous_item"></item></selector>
这样,这个组合控件就做好了。
下面我们在activity上使用一下这个组合控件。
首先我们需要在布局上指定我们定义的控件:
<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="match_parent" tools:context=".MainActivity" > <com.example.widgets.TitleBar android:id="@+id/title_bar" android:layout_width="match_parent" android:layout_height="wrap_content" > </com.example.widgets.TitleBar></RelativeLayout>
就跟使用普通控件一样。
下面是MainActivity:
package com.example.viewdemo4;import android.app.Activity;import android.os.Bundle;import com.example.widgets.TitleBar;public class MainActivity extends Activity{ private TitleBar title_bar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); title_bar = (TitleBar) findViewById(R.id.title_bar); title_bar.setTitleText("关于作者"); }}根据需要,我们可以修改组合控件显示的文字以及左侧按钮的点击事件。
3 0
- 【安卓笔记】自定义view之组合控件
- 安卓学习笔记之自定义组合控件
- 自定义view组合控件笔记
- 自定义View之组合控件
- 自定义View之组合控件
- 自定义View之组合控件
- 自定义View之组合控件
- 安卓自定义组合控件
- 自定义View之组合自定义控件
- 【安卓自定义控件系列】安卓自定义控件之组合控件
- 【安卓笔记】带自定义属性的view控件
- 群英传笔记 自定义view之 通过组合(复合)控件创建一个通用标题栏view
- 自定义View组合控件
- 安卓自定义组合控件 android.view.InflateException: Binary XML file #23:error inflate
- 自定义安卓的组合控件
- 安卓自定义组合控件的实现
- 自定义View---自定义组合控件
- 安卓开发:组合View实现自定义View
- 数据结构——左高树(C语言)
- Android Phone模块 一
- java jdom解析xml格式字符串
- JDK1.7新特性
- 易经六十四卦详解
- 【安卓笔记】自定义view之组合控件
- java的fuction!
- 面试技巧 (值得学习)
- public fianl中的java!
- 编辑文章 - 博客频道 - CSDN.NET
- UVa 401 - Palindromes
- jQuery $.get $.post $.getJSON 详解
- Spring中 @Autowired标签与 @Resource标签 的区别
- 使用NSZombie解决EXC_BAD_ACCESS问题