当前位置: 首页 > 编程笔记 >

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

暴阳州
2023-03-14
本文向大家介绍Android信息界面编辑及组合控件的封装,包括了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();
   }
  });
 }
}

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

 类似资料:
  • 本文向大家介绍Vue2.x通用编辑组件的封装及应用详解,包括了Vue2.x通用编辑组件的封装及应用详解的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Vue2.x通用编辑组件的封装及应用,供大家参考,具体内容如下 效果   组件源码 父组件中引用 注:组件源码中import '@/common/font/iconfont.css'目的是为了引入编辑图标,图标使用于iconfont官网

  • 通过该接口可以编辑指定视频的信息,地址为: http://spark.bokecc.com/api/video/update 需要传递以下参数: 参数 说明 videoid 视频id,不可为空 userid 用户id,不可为空 title 视频标题 tag 视频标签 description 视频描述 categoryid 视频子分类id playurl 视频播放页面地址,如果不编辑播放地址,请勿加

  • 感性认识 界面介绍,viewer Geocoder : 查找位置工具,查找到之后会将镜头对准找到的地址,默认使用bing地图 Home Button :视角返回初始位置. Scene Mode Picker : 选择视角的模式,有三种:3D,2D,哥伦布视图(CV) Base Layer Picker : 图层选择器,选择要显示的地图服务和地形服务. Navigation Help Button

  • #春招# 1. 自我介绍、为什么选择计算机 2. golang强类型,弱类型? 3. 内置的数据类型哪些是值传递,哪些是引用传递? 4. golang怎么解决同步互斥问题? 5. golang并发控制? 6. map并发读写问题? 7. sync.Map如何解决并发问题? 网络 8. tcp连接常见状态? 9. 为什么三次握手,不是四次握手? 10. 为什么挥手需要四次? 11. 问我是背的八股文

  • 好像是基架运维中间件组。 一面: 1.mysql主从 2.mysql慢查询 3.mysql优化 4.redis协议格式 5.go slice 6.go waitgroup 7.go 协程泄露 8.Go channel 9.kvm destory stop 10.docker提权 11.虚拟机和容器的区别 12. K8s ns 13.k8s探针 14.k8s基础组件及功能 15.为什么选择sre 反

  • 我正在尝试使用一个可编辑的组合框。因为我想添加一个用于按回车键的监听器。我尝试了下面的选项,但都不起作用。:( < code>cmb_year是组合框对象。