Android 自定义多状态提示输入布局 ColorTextInputLayout(1)

方案选型

====

XML中使用自定义 ViewGroup 的方式


  1. 通过addView()方法将需要的控件添加到ViewGroup

  2. 通过在xml布局文件中配置需要包含的控件

  3. 混合布局:1+2

方案优缺点对比


  • 方案1优点在于简洁,完全不需要另外配置xml布局文件,但也正是因此,它不具备在xml布局文件中动态配置子View的扩展性

  • 方案2优点是具有完全的可配置性,可在xml布局文件中任意配置子View,但缺点也很明显:

  1. 通用的子 View仍然需要在每个使用该 ViewGroup的 xml布局文件 中配置,过于繁琐

  2. 在 xml布局文件中配置在 ViewGroup下的子 View都会被 add到 ViewGroup下,无法进一步分配

  • 方案3的具有方案2的可配置性,同时又能通过方案1的方式来解决方案2的第1个缺点,也可以通过重写 ViewGroup 的 addView() 方法来解决方案2的第2个缺点。

结论

由于前述的需求,我需要1个通用的 TextView 来作为提示文本,同时又需要一个 ViewGroup 来存放从xml布局文件中加载进来的子View,这2个正对应方案2的2个问题,方案3正好能满足需求。

项目实施

====

在编写的过程中,有参考Google官方的 TextInputLayout,这个控件很有意思,它结合 EditText 一起使用的时候可以对hint文本进行移动,具体情况想了解可以搜一下看看。

TextInputLayout 重写的 addView() 方法:

public void addView(View child, int index, LayoutParams params) {

if (child instanceof EditText) {

FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(params);

flp.gravity = 16 | flp.gravity & -113;

this.i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值