AndroidAutoLayout使用注意事项

1.AndroidAutoLayout适配ListView、RecyclerView

转自:http://cache.baiducontent.com/c?m=9d78d513d99006e905fa950e4d4189355f0fc4342bd6a04b2c9fce0fd5735b30501790ac56510775d4d20b6116af3802b1b170366c5465a3dc88d64587fdd46a388954296d59c30405d36eadce1a728722934de9d848bae5ed70d3f387938c0b4eca51067e9df28a470315ce6af11137f4a6ee1253004e&p=c4769a47a49505ff57ed947e110596&newp=8471f91185cc43ff57ed947e1e5d97231610db2151d6d3176b82c825d7331b001c3bbfb42324120ed9cf7d6107af4f5ceafb34763d0923a3dda5c91d9fb4c57479&user=baidu&fm=sc&query=AutoRelativeLayout+%CA%CA%C5%E4+ListView&qid=91f5f923000c276f&p1=2

ListView、RecyclerView类的Item的适配

对于ListView这类控件的item,默认跟局部写“px”进行适配是无效的,因为外层非AutoXXXLayout,而是ListView。但是,不用怕,一行代码就可以支持了:

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    ViewHolder holder = null;
    if (convertView == null)
    {
        holder = new ViewHolder();
        convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item, parent, false);
        convertView.setTag(holder);
        //对于listview,注意添加这一行,即可在item上使用高度
        AutoUtils.autoSize(convertView);
    } else
    {
        holder = (ViewHolder) convertView.getTag();
    }

    return convertView;
}

注意AutoUtils.autoSize(convertView);这行代码的位置即可。demo中也有相关实例。

指定设置的值参考宽度或者高度

由于该库的特点,布局文件中宽高上的1px是不相等的,于是如果需要宽高保持一致的情况,布局中使用属性:

app:layout_auto_basewidth="height",代表height上编写的像素值参考宽度。

app:layout_auto_baseheight="width",代表width上编写的像素值参考高度。

如果需要指定多个值参考宽度即:

app:layout_auto_basewidth="height|padding"

用|隔开,类似gravity的用法,取值为:

  • width,height
  • margin,marginLeft,marginTop,marginRight,marginBottom
  • padding,paddingLeft,paddingTop,paddingRight,paddingBottom
  • textSize.

TextView的高度问题

设计稿一般只会标识一个字体的大小,比如你设置textSize="20px",实际上TextView所占据的高度肯定大于20px,字的上下都会有一定的建议,所以一定要灵活去写字体的高度,比如对于text上下的margin可以选择尽可能小一点。或者选择别的约束条件去定位(比如上例,选择了marginBottom)

TODO

  • 增加单个Activity横屏布局的支持(设计图必须是横屏的)
  • 完善demo(复杂的,简单的,ListView的各种)

其他信息

作者信息:

  • hongyangAndroid
  • 吃土豆的人

灵感来自:

  • android-percent-support-lib-sample
  • android-percent-support-extend
  • Android 屏幕适配方案

2.局部的layout布局自然也必须是auto的

你可能感兴趣的:(AndroidAutoLayout使用注意事项)