Android自定义UI控件(简单方便版,但不灵活)

这种方法的优点就是简单,容易理解,适合开发一些不经常用到的自定义UI控件

缺点就是比较不灵活,如果其他应用想使用这个控件的话得改很多

简单来说,这个方法是用来做成品的,下一篇的方法是用来做模板的。

先看成品,这是一个标题栏控件:

由左右两个按钮和中一个TextView组成:

实现方法:

第一步:定义一个xml文件,用来设计你自定义控件的雏形

示例代码:文件名为title

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     android:layout_width="match_parent"
 5     android:layout_height="wrap_content"
 6     android:background="#000" >
 7     <Button
 8         android:id="@+id/title_back"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_gravity="center"
12         android:layout_margin="5dip"
13         android:background="#000"
14         android:text="Back"
15         android:textColor="#fff" />
16      <TextView
17          android:id="@+id/title_text"
18          android:layout_width="0dip"
19          android:layout_height="wrap_content"
20          android:layout_gravity="center"
21          android:layout_weight="1"
22          android:gravity="center"
23          android:text="Title Text"
24          android:textColor="#fff"
25          android:textSize="24sp" />
26       <Button
27           android:id="@+id/title_edit"
28           android:layout_width="wrap_content"
29           android:layout_height="wrap_content"
30           android:layout_gravity="center"
31           android:layout_margin="5dip"
32           android:background="#000"
33           android:text="Edit"
34           android:textColor="#fff" />
35 </LinearLayout>

接下来如果不用设置响应事件的话,直接在需要引用该控件的布局文件中写入这个句代码就可以。

<include layout="@layout/title" />

1 <LinearLayout
2     xmlns:android="http://schemas.android.com/apk/res/android"
3     android:layout_width="match_parent" android:layout_height="match_parent" >
4     <include layout="@layout/title" />
5 </LinearLayout>

如果要设置响应事件的话就进行下一步

第二步:创建一个Topbar类继承布局类,通过获得title布局文件中的需要设置响应事件的控件的id来设置响应事件。

示例代码:

 1 public class TitleLayout extends LinearLayout {
 2
 3      public TitleLayout(Context context, AttributeSet attrs) {
 4          super(context, attrs);
 5          LayoutInflater.from(context).inflate(R.layout.title, this);
 6          Button titleBack = (Button) findViewById(R.id.title_back);
 7          Button titleEdit = (Button) findViewById(R.id.title_edit);
 8          titleBack.setOnClickListener(new OnClickListener() {
 9             @Override
10             public void onClick(View v) {
11                 Toast.makeText(getContext(), "You clicked Back button",
12                 Toast.LENGTH_SHORT).show();
13             }
14          });
15          titleEdit.setOnClickListener(new OnClickListener() {
16
17             @Override
18             public void onClick(View v) {
19                 Toast.makeText(getContext(), "You clicked Edit button",
20                 Toast.LENGTH_SHORT).show();
21             }
22          });
23      }
24 }

第三部:在布局文件中这样设置:

 1 <LinearLayout
 2     xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5     <com.example.diy.TitleLayout
 6         android:layout_width="match_parent"
 7         android:layout_height="wrap_content">
 8     </com.example.diy.TitleLayout>
 9
10 </LinearLayout>

就完成了所有需要的功能

注意控件需要写入完整的包名!

   

 如果有什么错误,或者我理解错误或不当的,恳请大家纠正,谢谢!嘻嘻嘻~

时间: 2024-10-05 02:34:41

Android自定义UI控件(简单方便版,但不灵活)的相关文章

Android自定义用户控件简单范例(一)

一款优秀的移动应用需要具有自己独特统一的风格,通常情况下UI设计师会根据产品需求和使用人群的特点,设计整体的风格,界面的元素和控件的互效果.而原生态的Android控件为开发人员提供的是最基本的积木元素,如果要准确地传递统一的视觉效果和交互体验,对控件的自定义使用是非常有必要的. 这篇文章通过一个简单的从Java后台程序中进行创建的示例来说明Android自定义控件的运行原理. <LinearLayout xmlns:android="http://schemas.android.com/

Android自定义用户控件简单范例(二)

对于完全由后台定制的控件,并不是很方便其他人的使用,因为我们常常需要看到控件放到xml界面上的效果,并根据效果进行布局的调整,这就需要一个更加标准的控件制作流程: 我们的自定义控件和其他的控件一样,应该写成一个类,而这个类的属性是是有自己来决定的. 我们要在res/values目录下建立一个attrs.xml的文件,并在此文件中增加对控件的属性的定义. 使用AttributeSet来完成控件类的构造函数,并在构造函数中将自定义控件类中变量与attrs.xml中的属性连接起来. 在自定义控件类中使

Android 自定义组合控件 简单导航栏

最近在做项目的过程中,发现项目中好多界面的导航栏都很类似或者一样,但是每次都要重复写同样的代码,觉得很不爽,所以就简单地自定义了一下导航栏控件. 先上图: 导航栏包括: 返回按钮 标题 右侧按钮(功能不确定) 首先是布局文件,如下: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res

Android UI开源组件库BottomView ,第三方自定义UI控件

这里分享一个Android的非常经典实用而且简单方便的第三方UI控件库:BottomView(小米的米UI也用到了这个) 实现功能: 可以在底部弹出的View里自定义布局: 可以自定义是否可以触摸外部消失: 可以自定义事件: 可以自定义外围背景是否透明: 可以自定义动画: 如果需要的话,可以强制为顶部View显示 BottomView.jar库文件下载地址:http://download.csdn.net/detail/jay100500/7547055 BottomView的Demo下载地址:

Android 自定义组合控件小结

引言 接触Android UI开发的这段时间以来,对自定义组合控件有了一定的了解,为此小结一下,本文小结内容主要讨论的是如何使用Android SDK提供的布局和控件组成一个功能完整组合控件并将其封装为面向对象的类,而并非讨论如何继承自SDK提供的控件类(比如TextView),对其进行自定义扩展的问题. 进入正题前,我们先来看一组功能需求 假设在手机需求上,那么如上三个界面我们可以使用三个Activity,每个Activity一个布局文件,实现起来比较独立,但是假设在Android pad上要

cocos2d-js 3.0 rc2 自定义UI控件组件 例子:能播放动画的MenuItem。MenuItemSprite的bug

其实总体自定义UI组件都比较简单,尤其是cocos2d-js是开源的,如果有什么不明白的直接看js代码或者C++代码即可.当然js代码基本就够了. 另外,js的ctor函数虽然说是构造函数,但毕竟不是flash或者c++的构造函数,这只是一个普通函数,也就是说可以不在第一行默认调用,这就给扩展带来了不少方便. 现在想做一个声音按钮,点一下能关闭音乐,再点一下又能打开.当然就是MenuItemToggle了. 但想做得再炫一点,有声音的时候,按钮的样子能有几个音波的变化.那么就需要用MenuIte

[Android] Android 让UI控件固定于底部的几种方法

Android 让UI控件固定于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_parent -->android:layout_weight="1" <!-- 这里设置layout_weight=1是最关键的,否则底部的LinearLayout无法到底部 --> 2. 采用relativelayout布局:android:layout_alignPa

AndroidUI开源组件库BottomView 第三方自定义UI控件

这里分享一个Android的非常经典实用而且简单方便的第三方UI控件库:BottomView(小米的米UI也用到了这个) 实现功能: 可以在底部弹出的View里自定义布局: 可以自定义是否可以触摸外部消失: 可以自定义事件: 可以自定义外围背景是否透明: 可以自定义动画: 如果需要的话,可以强制为顶部View显示 BottomView.jar库文件下载地址:http://download.csdn.net/detail/jay100500/7547055 BottomView的Demo下载地址:

Android 自定义View控件

一.简介 在自定义View时,我们通常会重写onDraw()方法来绘制View的显示内容.如果,该View还需要使用wrap_content属性,那么还必须重写onMeasure()方法.另外,通过自定义attrs属性,还可以设置新的属性配置值. 在View中通常有以下一些比较重要的回调方法: onFinisInflate():从XML加载组件后回调: onSizeChanged():组件大小改变时回调: onMeasure():回调该方法来进行测量: onLayout():回调该方法来确定显示