记关于控件的3个小问题

1、Button字母问题
记关于控件的3个小问题_第1张图片
Button字母问题

如上图所示,一个简单的Button,当你text输入字母时,无论你输入的是大写还是小写,都全部按大写显示,这就有点别扭了,解决倒非常简单,加一下下面这个属性即可:

android:textAllCaps="false"  
2、TextView跑马灯效果

这个没什么好说的,如果要实现TextView无线循环跑马灯效果,请加入如下属性:

 android:ellipsize="marquee"
 android:focusable="true"
 android:marqueeRepeatLimit="-1"
 android:focusableInTouchMode="true"
 android:scrollHorizontally="true"
 android:singleLine="true"
3、ViewGroup点击背景变色

点击背景变色这个很容易实现,最简单可以自己写selector,然后设置为background即可,当然,如果你嫌弃得新建很多drawable的话,也可以使用第三方框架,比如这个:BackgroundLibrary,用起来也非常简单,各种效果都有,基本可以告别自己绘制drawable了。
当然,有时候嘛,你只是想实现一个简单的“白变灰”,最常见的场景就是一个列表,点击每个item时就需要这样的效果,如果上面那两种方案你都觉得太麻烦了,还是有更简便的办法的,你可以加入以下属性即可:

 android:clickable="true"
 android:focusable="true"
 android:foreground="?attr/selectableItemBackground"
 android:background="@color/white"

加入这个后,你会发现在Android6.0及以上点击后会有水波纹效果,而在Android6.0以下则会进行变色,当然,这一招也是有一定局限性的,你去测试的话就会发现,当你的布局不是FrameLayout的话,在Android6.0以下点击连变色都不会了,这究竟是怎么一回事呢?我们直接上源码:

        case R.styleable.View_foreground:
              if (targetSdkVersion >= Build.VERSION_CODES.M || this instanceof FrameLayout) {
                  setForeground(a.getDrawable(attr));
              }
              break;

这是View里面处理相关属性的一段源码,代码非常简单,这个就不用多说了吧
所以,如果你想通过这种加属性的方法来达到点击效果的话,为了具有更好的兼容性,你的布局最好是FrameLayout。

你可能感兴趣的:(记关于控件的3个小问题)