Android信息界面编辑及组合控件的封装

本文实例为大家分享了Android编辑信息界面,及组合控件的封装,供大家参考,具体内容如下

Github地址(完整Demo,欢迎下载

效果图

attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
 <declare-styleable name="ItemGroup">
  <!--标题的文字-->
  <attr name="title" format="string" />
  <!--标题的字体大小-->
  <attr name="title_size" format="dimension" />
  <!--标题的字体颜色-->
  <attr name="title_color" format="color" />
  <!--输入框的内容-->
  <attr name="edt_content" format="string" />
  <!--输入框的字体大小-->
  <attr name="edt_text_size" format="dimension" />
  <!--输入框的字体颜色-->
  <attr name="edt_text_color" format="color" />
  <!--输入框提示的内容-->
  <attr name="edt_hint_content" format="string" />
  <!--输入框的提示字体的字体颜色-->
  <attr name="edt_hint_text_color" format="color" />
  <!--输入框是否可以编辑内容-->
  <attr name="isEditable" format="boolean"/>
  <!--向的右箭头图标是否可见-->
  <attr name="jt_visible" format="boolean"/>
  <!--item布局的内边距-->
  <attr name="paddingLeft" format="dimension"/>
  <attr name="paddingRight" format="dimension"/>
  <attr name="paddingTop" format="dimension"/>
  <attr name="paddingBottom" format="dimension"/>

  <attr name="drawable_left" format="reference" />
  <attr name="drawable_right" format="reference" />
  <attr name="line_color" format="color" />
  <attr name="line_height" format="integer" />
 </declare-styleable>
</resources>

获取到各属性

private void initAttrs(Context context, AttributeSet attrs) {
  //标题的默认字体颜色
  int defaultTitleColor = context.getResources().getColor(R.color.item_group_title);
  //输入框的默认字体颜色
  int defaultEdtColor = context.getResources().getColor(R.color.item_group_edt);
  //输入框的默认的提示内容的字体颜色
  int defaultHintColor = context.getResources().getColor(R.color.item_group_edt);

  TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ItemGroup);
  String title = typedArray.getString(R.styleable.ItemGroup_title);
  float paddingLeft = typedArray.getDimension(R.styleable.ItemGroup_paddingLeft, 15);
  float paddingRight = typedArray.getDimension(R.styleable.ItemGroup_paddingRight, 15);
  float paddingTop = typedArray.getDimension(R.styleable.ItemGroup_paddingTop, 5);
  float paddingBottom = typedArray.getDimension(R.styleable.ItemGroup_paddingTop, 5);
  float titleSize = typedArray.getDimension(R.styleable.ItemGroup_title_size, 15);
  int titleColor = typedArray.getColor(R.styleable.ItemGroup_title_color, defaultTitleColor);
  String content = typedArray.getString(R.styleable.ItemGroup_edt_content);
  float contentSize = typedArray.getDimension(R.styleable.ItemGroup_edt_text_size, 13);
  int contentColor = typedArray.getColor(R.styleable.ItemGroup_edt_text_color, defaultEdtColor);
  String hintContent = typedArray.getString(R.styleable.ItemGroup_edt_hint_content);
  int hintColor = typedArray.getColor(R.styleable.ItemGroup_edt_hint_text_color, defaultHintColor);
  //默认输入框可以编辑
  boolean isEditable = typedArray.getBoolean(R.styleable.ItemGroup_isEditable, true);
  //向右的箭头图标是否可见,默认可见
  boolean showJtIcon = typedArray.getBoolean(R.styleable.ItemGroup_jt_visible, true);
  typedArray.recycle();

  //设置数据
  //设置item的内边距
  itemGroupLayout.setPadding((int) paddingLeft, (int) paddingTop, (int) paddingRight, (int) paddingBottom);
  titleTv.setText(title);
  titleTv.setTextSize(titleSize);
  titleTv.setTextColor(titleColor);

  contentEdt.setText(content);
  contentEdt.setTextSize(contentSize);
  contentEdt.setTextColor(contentColor);
  contentEdt.setHint(hintContent);
  contentEdt.setHintTextColor(hintColor);
  contentEdt.setFocusableInTouchMode(isEditable); //设置输入框是否可以编辑
  contentEdt.setLongClickable(false); //输入框不允许长按
  jtRightIv.setVisibility(showJtIcon ? View.VISIBLE : View.GONE); //设置向右的箭头图标是否可见
}

xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 tools:context="com.zx.itemgroup.MainActivity">

 <com.zx.itemgroup.ItemGroup
  android:id="@+id/name_ig"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  app:edt_hint_content="请输入姓名"
  app:jt_visible="false"
  app:paddingLeft="15dp"
  app:title="姓名" />

 <com.zx.itemgroup.ItemGroup
  android:id="@+id/id_card_ig"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  app:edt_hint_content="请输入身份证号"
  app:jt_visible="false"
  app:paddingLeft="15dp"
  app:title="身份证" />

 <com.zx.itemgroup.ItemGroup
  android:id="@+id/select_birthday_ig"
  android:layout_width="match_parent"
  android:layout_height="46dp"
  app:edt_hint_content="请选择出生日期"
  app:isEditable="false"
  app:paddingLeft="15dp"
  app:title="出生日期" />

 <com.zx.itemgroup.ItemGroup
  android:id="@+id/select_city_ig"
  android:layout_width="match_parent"
  android:layout_height="46dp"
  app:edt_hint_content="请选择您所在的城市"
  app:isEditable="false"
  app:paddingLeft="15dp"
  app:title="所在城市" />
</LinearLayout>

调用的activity

/**
 * 组合控件封装(提交信息及编辑信息界面及功能)
 */
public class MainActivity extends AppCompatActivity {

 private Context mContext;
 private ItemGroup nameIG, idCardIG, birthdayIG, cityIG;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  mContext = this;
  initView();
 }

 private void initView() {
  nameIG = (ItemGroup) findViewById(R.id.name_ig);
  idCardIG = (ItemGroup) findViewById(R.id.id_card_ig);
  birthdayIG = (ItemGroup) findViewById(R.id.select_birthday_ig);
  cityIG = (ItemGroup) findViewById(R.id.select_city_ig);
  birthdayIG.setItemOnClickListener(new ItemGroup.ItemOnClickListener() {
   @Override
   public void onClick(View v) {
    Toast.makeText(mContext, "点击了选择出生日期", Toast.LENGTH_SHORT).show();
   }
  });
  cityIG.setItemOnClickListener(new ItemGroup.ItemOnClickListener() {
   @Override
   public void onClick(View v) {
    Toast.makeText(mContext, "点击了选择城市", Toast.LENGTH_SHORT).show();
   }
  });
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android登录界面的实现代码分享

    最近由于项目需要,宝宝好久没搞Android啦,又是因为项目需要,现在继续弄Android,哎,说多了都是泪呀,别的不用多说,先搞一个登录界面练练手,登录界面可以说是Android项目中最常用也是最基本的,如果这个都搞不定,那可以直接去跳21世纪楼啦. 废话不多说,先上效果图了,如果大家感觉还不错,请参考实现代码吧. 相信这种渣渣布局对很多人来说太简单啦,直接上布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk

  • Android设计登录界面、找回密码、注册功能

    本文实例为大家分享了Android 登录.找回密码.注册功能的实现代码,供大家参考,具体内容如下 1.数据库的设计 我在数据库中添加了两张表,一张表用来存储用户信息,诸如用户名,密码,手机号等,可任意添加.另一张表用来存储上一个登录用户的账户信息,我是为了方便才另外创建了一张表去存储,而且这张表我设计了它只能存储一条信息,每次的存储都是对上一条记录的覆盖.事实上,我尝试过在存储用户信息的那张表内添加一个标识,用来标记上一次登录的是哪一个帐号,但是这样做的话,每次改变标识都需要遍历整张表,十分的麻

  • Android界面设计(APP设计趋势 左侧隐藏菜单右边显示content)

    相关文章android popwindow实现左侧弹出菜单层http://www.jb51.net/article/33533.htm 移动App设计的13大精髓http://www.jb51.net/article/33534.htm 这文章讲述了2013年未来的移动APP设计趋势,感觉挺有道理的.wp8的平面界面设计已经取得很大的成功,很多应用也都是采取相同的设计如zaker,还有类似本文要展示的左侧导航菜单右边显示主要内容的设计,通过menu菜单或者左右拖动可以弹出左侧导航菜单,国内的应用

  • android 引导界面的实现方法

    复制代码 代码如下: /** * 实现 * @author dujinyang * */ 顺序是: OneAcitivity  -->MainActivity -> TwoActivity 然后第2次进去就是:OneActivity -> TwoActivity 代码里都有注释的了,这里就不多说了.OneActivity的代码如下: [java] 复制代码 代码如下: package cn.djy.activity; import android.app.Activity; import

  • Android仿新浪微博个人信息界面及其他效果

    本教程为大家分享了Android微博个人信息界面设计代码,供大家参考,具体内容如下 根据用户ID获取用户信息接口: http://open.weibo.com/wiki/2/users/show 如果你已经实现前面的功能那个这个人信息界面便是小菜一碟,此处不作叙述. 补充 1.时间处理类: 处理微博发出时间距现在时刻的时间.应该是比较容易理解的. /** * 时间处理类 */ public class DateUtils { public String getInterval(String cr

  • Android高仿微信聊天界面代码分享

    微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们来看一下整个小项目的主体结构: 下面是Activity的代码: package com.way.demo; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import jav

  • android开发之欢迎界面的小例子

    首先你得写好xml文件,这也是最主要的. 然后,在activity中加入一个线程,延时2秒,用来跳转到主界面. activity中线程代码如下:(顺便检测一下网络是否打开) [java] 复制代码 代码如下: @Override     protected void onStart() {         super.onStart();         if(<SPAN style="COLOR: #ff0000">isNetworkConnected()</SPA

  • Android信息界面编辑及组合控件的封装

    本文实例为大家分享了Android编辑信息界面,及组合控件的封装,供大家参考,具体内容如下 Github地址(完整Demo,欢迎下载) 效果图 attrs.xml <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="ItemGroup"> <!--标题的文字--> <attr name=&quo

  • 在Android开发中使用自定义组合控件的例子

    一.定义一个XML布局文件 setting_item_view.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height

  • Android中View自定义组合控件的基本编写方法

    有很多情况下,我们只要运用好Android给我提供好的控件,经过布局巧妙的结合在一起,就是一个新的控件,我称之为"自定义组合控件". 那么,这种自定义组合控件在什么情况下用呢?或者大家在做项目时候会发现,某些布局会被重复的利用,同一个布局的XML代码块会被重复的复制黏贴多次,这样会造成代码结构混乱不说,代码量也会增大,各种控件都需要在Java代码中被申明和处理相应的逻辑,工作量着实不小,所以,必须要找到一个合理的"偷懒"的方式,开动脑经去怎么简化以上说的不必要的麻烦

  • 实例讲解Android应用中自定义组合控件的方法

    自定义view大概可以分成: 继承view 组合view 自己画的view(用paint和canvas) 自定义viewgroup(widget) 最近又跟同学聊起来了,于是就准备自己实现一个imagebutton来练练手.(最简单的了)以及后面一个把imageview与textview结合使用的案例. ImageButton 要实现ImageButton最容易想到的不就是把button和imageview合在一起么.嗯,人容易就想到这是一个组合自定义view.可是如何把一个image放到but

  • 在ASP.NET 2.0中操作数据之三十九:在DataList的编辑界面里添加验证控件

    导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的price- 会导致异常.在前面一章里我们学习了如何在DataList的UpdateCommand事件处理中添加异常处理代码,以便在出现异常时捕捉它并显示友好的错误信息.然而理想的编辑界面应该包含验证控件,用来在第一时间里阻止用户输入一些非法数据. 本章我们将学习在DataList的EditItemTemplate里添加验证控件从而提供一个更安全的编辑界面,

  • Android自定义控件之创建可复用的组合控件

    前面已学习了一种自定义控件的实现,是Andriod 自定义控件之音频条,还没学习的同学可以学习下,学习了的同学也要去温习下,一定要自己完全的掌握了,再继续学习,贪多嚼不烂可不是好的学习方法,我们争取学习了一种技术就会一种技术,而且不光看了就算了,最好的方法就是看完我自己再练习下,再扩展下,在原来的基础上在添加一些东西,比如,增加一些功能实现等等. 今天我们打算学习下另外一种自定义控件,就是创建可重复使用的组合控件,那么问题来了: 什么是可重复使用? 就是在应用中,可以在多个地方共同使用一套代码.

  • 解决Android Studio Design界面不显示layout控件的问题

    Android Studio更新到3.1.3后,发现拖到Design中的控件在预览界面中不显示: 解决办法: 在Styles.xml中的parent="..."中的Theme前添加Base <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar&quo

  • Android自定义组合控件之自定义下拉刷新和左滑删除实例代码

    绪论 最近项目里面用到了下拉刷新和左滑删除,网上找了找并没有可以用的,有比较好的左滑删除,但是并没有和下拉刷新上拉加载结合到一起,要不就是一些比较水的结合,并不能在项目里面使用,小编一着急自己组合了一个,做完了和QQ的对比了一下,并没有太大区别,今天分享给大家,其实并不难,但是不知道为什么网上没有比较好的Demo,当你的项目真的很急的时候,又没有比较好的Demo,那么"那条友谊的小船儿真是说翻就翻啊",好了,下面先来具体看一下实现后的效果吧: 代码已经上传到Github上了,小伙伴们记

  • Android组合控件实现功能强大的自定义控件

    通常情况下,Android实现自定义控件无非三种方式. Ⅰ.继承现有控件,对其控件的功能进行拓展. Ⅱ.将现有控件进行组合,实现功能更加强大控件. Ⅲ.重写View实现全新的控件 上文说过了如何继承现有控件来自定义控件:<Android继承现有控件拓展实现自定义控件textView>,这节我们来讨论第二个议题.怎么将控件组合来实现一个功能强大的自定义控件. 先看看创建组合控件的好处吧,创建组合控件能够很好的创建具有组合功能的控件集合.那我们一般又是怎么做的了,一般我们来继承一个合适的ViewG

  • Android自定义View之组合控件实现类似电商app顶部栏

    本文实例为大家分享了Android自定义View之组合控件,仿电商app顶部栏的相关代码,供大家参考,具体内容如下 效果图: 分析:左右两边可以是TextView和Button,设置drawableTop即可,中间的看着像是EditText,但是用过淘宝天猫等类似app的话会发现点击搜索不是在当前Activit进行搜索的,是跳转到另外的页面进行的,所以用TextView然后设置背景即可. 实现流程 参数列表: 设置属性文件:values下建立attrs.xml文件,添加需要自定义的属性. <?x

随机推荐