第一行安卓代码——创建自定义控件3.4
来源:互联网 发布:梭哈网络用语什么意思 编辑:程序博客网 时间:2024/05/23 01:25
有时候我们会觉得系统提供的控件不能满足我们的需求。这个时候我们可以自定义控件来使用。
下面我们举个引入布局的例子。
新建title.xml
LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/title_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:text="Back" android:textColor="#fff"/> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="Title text" android:textColor="#fff" android:textSize="24sp"/> <Button android:id="@+id/title_edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:text="Edit" android:textColor="#fff"/></LinearLayout
在activity_main.xml中加一行代码
<include layout = "@layout/title"/>
然后在MainActivity中将系统自带的标题栏隐藏掉
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); if( actionBar != null) { actionBar.hide(); } }
结果如图
现在已经解决了重复编写布局代码的问题,但是这些控件不能响应事件,怎么办呢?
使用自定义控件的方式来解决
新建TitleLayout
public class TitleLayout extends LinearLayout { public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.title, this); Button button1 = (Button) findViewById(R.id.title_back); Button button2 = (Button) findViewById(R.id.title_edit); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { ((Activity)getContext()).finish(); } }); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getContext(), "You clicked Edit Button", Toast.LENGTH_SHORT).show(); } }); }}
在布局文件中添加这个自定义控件
<com.example.hms.a34.TitleLayout android:layout_width="wrap_content" android:layout_height="wrap_content"></com.example.hms.a34.TitleLayout>
ok,这样的话,每当我们在一个布局中引入TitleLayout时, 返回按钮和编辑按钮的点击事件就都已经自动实现好了,这就省去了许多编写重复代码的工作。
0 0
- 第一行安卓代码——创建自定义控件3.4
- 第一行代码3.2-创建自定义控件
- 自定义控件——第一行代码3.4.2
- 自定义控件——第一行代码3.4.2
- 第一行安卓代码——在活动中创建Menu2.2
- 读《第一行代码——安卓》2.3.3
- 第一行安卓代码——使用通知8.2
- 第一行安卓代码
- 第一行安卓代码——最常用和最难用的控件——ListView3.5
- 《第一行代码》复习四 自定义控件
- 第一行代码 3.4.2 创建自定义控件 章节中初上手出项的下载完成后闪退问题和自定义控件无反应问题
- 第一行代码-安卓之旅
- 第一行安卓代码——调用摄像头拍照8.3.1
- 第一行安卓代码——从相册中选择照片8.3.2
- 第一行安卓代码——播放多媒体文件8.4.1
- 第一行安卓代码——播放视频8.4.2
- 第一行安卓代码——使用Intent在活动之间穿梭2.3
- 第一行安卓代码——活动的生命周期2.4
- expreiment to see what a callback function should be When executing a query
- Java数据类型中String、Integer、int相互间的转换
- js动态加载元素的事件响应--jquery解决
- 如何快速赚钱:Python爬虫
- MySQL备份之LVM实战
- 第一行安卓代码——创建自定义控件3.4
- Android 5.0以下出现java.lang.NoClassDefFoundError错误
- 关于eclipse配置svn版本控制工具
- adb命令
- (Ryan的Redis系列博客)5.Redis的键字符串类型
- 浅谈逆元
- 设计数据库时需要考虑的问题
- 浅谈排列组合
- HTML初级应用——简单的页面拼写(1)