Recycleview新特性以及Textview的添加图片的新特性

Textview新特性

很早之前就可以添加图片了,类似于菜单栏的上面图片下面文字的布局,自己写布局既浪费内存又浪费时间,有个简单的方法就是调用Textview的接口直接设置代码,和Padding值

/**
 * TextView设置组件图片
 */
private void setTextDrawable(TextView tv,int resId){
    Drawable drawable= getResources().getDrawable(resId);
    drawable.setBounds(0, 0, (int) (ToolsUtil.screenParams.getScale()*100), (int) (ToolsUtil.screenParams.getScale()*100));
    tv.setCompoundDrawables(null,drawable,null,null);
    tv.setCompoundDrawablePadding((int) (ToolsUtil.screenParams.getScale()*20));
}
效果如下:


Recycleview新特性以及Textview的添加图片的新特性_第1张图片





RecyclerView 23.2.0  

RecyclerView 除了整体能wrap_content之外 我还发现

这时还会优先给子控件最大空间:源码变化:


RecyclerView.Java 23.1.0

[java]  view plain  copy
 print ?
  1. void setRecyclerView(RecyclerView recyclerView) {  
  2.       if (recyclerView == null) {  
  3.           mRecyclerView = null;  
  4.           mChildHelper = null;  
  5.       } else {  
  6.           mRecyclerView = recyclerView;  
  7.           mChildHelper = recyclerView.mChildHelper;  
  8.       }  
  9.   
  10.   }  

RecyclerView.java 23.2.0

[java]  view plain  copy
 print ?
  1. void setRecyclerView(RecyclerView recyclerView) {  
  2.         if (recyclerView == null) {  
  3.             mRecyclerView = null;  
  4.             mChildHelper = null;  
  5.             mWidthSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY);  
  6.             mHeightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.EXACTLY);  
  7.         } else {  
  8.             mRecyclerView = recyclerView;  
  9.             mChildHelper = recyclerView.mChildHelper;  
  10.             mWidthSpec = MeasureSpec  
  11.                     .makeMeasureSpec(recyclerView.getWidth(), MeasureSpec.EXACTLY);  
  12.             mHeightSpec = MeasureSpec  
  13.                     .makeMeasureSpec(recyclerView.getHeight(), MeasureSpec.EXACTLY);  
  14.         }  
  15.     }  


所以  如果item布局高度为match_parent时候 第二个Item可能就在下一页了,当前屏幕只能显示一个Item

解决方案:将item根布局高度设置为wrap_content


 

这个版本给LayoutManager API添加了新的特性:自动测量(auto-measurement)! 他允许RecyclerView 根据内容控制高度。这意味着我们可以实现之前无法实现的情景(比如给 RecyclerView 设置 WRAP_CONTENT 属性)


新版的改动意味着什么呢?
举个例子:

我们使用一个简单的 item 视图填充到简单的 RecyclerView 中去:
| item_layout.xml


    xmlns:android=”http://schemas.android.com/apk/res/android"
    android:layout_width=”match_parent”
    android:layout_height=”match_parent”>
    
    
    

之前版本(V23.1.1)

build.gradle
dependencies {
    //...
    compile ‘com.android.support:recyclerview-v7:23.1.1’
}

Recycleview新特性以及Textview的添加图片的新特性_第2张图片

新版(V23.2.0)

build.gradle
dependencies {
//...
compile ‘com.android.support:recyclerview-v7:23.2.0’
}

Recycleview新特性以及Textview的添加图片的新特性_第3张图片

相同的 item ,在 23.2.0 充满了整个空间,只需要修改 item 视图的 layout parameters

item_layout.xml

<relativelayout xmlns:android="”http://schemas.android.com/apk/res/android"" android:layout_width="”match_parent”" --="" 修改回="" wrap_content="" --="">
     android:layout_height=”wrap_content” >
<imageview>
        <textview>
        <textview>
textview>textview>imageview>relativelayout>

在 23.2.0 上给 item 设置 wrpa_content 后,RecyclerView 样式又回来了~

Recycleview新特性以及Textview的添加图片的新特性_第4张图片

结束了吗?还没完呢

在这补充一下在23.2版本之前使用wrap_content是不起效果的,recycleview这个布局还是会占满屏幕的,所以更新到最新版本吧!


你可能感兴趣的:(android)