Android布局你未知的属性

本文是做项目的时候在搭建布局时遇到还未了解的属性的记录,后期遇到会继续完善。
layout

TextView中的ellipsize属性

  • 一般与android:singleLine=”true”使用
    1
    2
    3
    4
    android:ellipsize=”start”—–省略号显示在开头 "...pedia"
    android:ellipsize=”end”——省略号显示在结尾 "encyc..."
    android:ellipsize=”middle”—-省略号显示在中间 "en...dia"
    android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时)

RatingBar的使用

  • 这个属性是必须的android:progressDrawable="@drawable/process_ratingbar" 查看源码可知,源码地址为SDK–platforms–任意android版本–data–res–drawble–ratingbar_full.xml
  • process_ratingbar.xml 内容如下

    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+android:id/background" android:drawable="@drawable/rating_small_empty" />
    <item android:id="@+android:id/secondaryProgress" android:drawable="@drawable/rating_small_half" />
    <item android:id="@+android:id/progress" android:drawable="@drawable/rating_small_full" />
    </layer-list>
  • <item android:id="@+android:id/background" android:drawable="@drawable/rating_small_empty" />中系统可能会识别不了,需要选择Disable

selector 的属性

  • android:enterFadeDuration/android:exitFadeDuration (Drawables)此属性在Drawable具有多种状态的时候,可以定义它展示前的淡入淡出效果。
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" android:enterFadeDuration="200">
    <item android:state_pressed="true" android:drawable="@drawable/list_item_bg_pressed"></item>
    <item android:drawable="@drawable/list_item_bg_normal"></item>
    </selector>

ImageView 图片的拉伸处理

  • 通过设置android:scaleType=”fitXY”使得图片拉伸显示。
    scaleType的属性有matrix(默认)、center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY。

  • android:scaleType=”center”
    保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理。

  • android:scaleType=”centerCrop”
    以填满整个ImageView为目的,将原图的中心对准ImageView的中心,等比例放大原图,直到填满ImageView为止(指的是ImageView的宽和高都要填满),原图超过ImageView的部分作裁剪处理。

  • android:scaleType=”centerInside”
    以原图完全显示为目的,将图片的内容完整居中显示,通过按比例缩小原图的size宽(高)等于或小于ImageView的宽(高)。如果原图的size本身就小于ImageView的size,则原图的size不作任何处理,居中显示在ImageView。

  • android:scaleType=”matrix”
    不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理。

  • android:scaleType=”fitCenter”
    把原图按比例扩大或缩小到ImageView的ImageView的高度,居中显示

  • android:scaleType=”fitEnd”
    把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的下部分位置

  • android:scaleType=”fitStart”
    把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的上部分位置

  • android:scaleType=”fitXY”
    把原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView.

ListView的item点击事件消失

  • 原因可能是:item中包含了CheckBox 或者Button等控件抢占焦点
  • 解决办法:

    • (1)在ListView 控件下添加如下属性
      属性的值有三种:

      1
      2
      3
      4
      beforeDescendants:viewgroup会优先其子类控件而获取到焦点
      afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
      blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
      通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性。
    • (2)在CheckBox 或者Button等能抢占焦点的控件下,添加如下属性

      1
      2
      3
      android:focusable="false"
      android:clickable="false"
      android:focusableInTouchMode="false"
小额支持我写出更好的文章~