RecyclerView wrap_content
2016-03-24 12:46
375 查看
RecyclerView内容包裹根据其内容而填充大小,网上各种奇葩方案要么重写layoutManager反复测量child要么丢失divider要么性能低下
在这里给出google官方的解决方案是在supportlib>23.2.0
compile'com.android.support:recyclerview-v7:23.2.0'
最关键的一句:
RecyclerView.LayoutManagerlayoutManager=newLinearLayoutManager(this);layoutManager.setAutoMeasureEnabled(true);源码:
*@paramenabled<code>True</code>iftheLayoutshouldbemeasuredbythe*RecyclerView,<code>false</code>iftheLayoutManagerwants*tomeasureitself.**@see#setMeasuredDimension(Rect,int,int)*@see#isAutoMeasureEnabled()*/publicvoidsetAutoMeasureEnabled(booleanenabled){mAutoMeasure=enabled;}
例子:
activity_test.xml
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v7.widget.RecyclerViewandroid:id="@+id/rv"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="#6cf"></android.support.v7.widget.RecyclerView></LinearLayout>activity
packagegitosctest.gitosc_studyproject;importandroid.app.Activity;importandroid.os.Bundle;importandroid.support.v7.widget.LinearLayoutManager;importandroid.support.v7.widget.RecyclerView;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.TextView;/***@authorxuanyouwu*@emailxuanyouwu@163.com*@time2016-03-2412:30*/publicclassTestActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_test);RecyclerViewrecyclerView=(RecyclerView)findViewById(R.id.rv);RecyclerView.LayoutManagerlayoutManager=newLinearLayoutManager(this);layoutManager.setAutoMeasureEnabled(true);recyclerView.setLayoutManager(layoutManager);recyclerView.setAdapter(newMyAdapter());}classMyAdapterextendsRecyclerView.Adapter<MyAdapter.MyHolder>{classMyHolderextendsRecyclerView.ViewHolder{TextViewtextView;publicMyHolder(ViewitemView){super(itemView);textView=(TextView)itemView.findViewById(R.id.textView);}}@OverridepublicMyHolderonCreateViewHolder(ViewGroupparent,intviewType){Viewv=LayoutInflater.from(parent.getContext()).inflate(R.layout.item_string,parent,false);returnnewMyHolder(v);}@OverridepublicvoidonBindViewHolder(MyHolderholder,intposition){holder.textView.setText("item:"+position);}@OverridepublicintgetItemCount(){return3;}}}效果图:
当recyclerView嵌套在scrollView中依旧可以展现出wrap_content
如:
相关文章推荐
- linux中安装jdk+jmeter-
- 自定义滚动条
- linux中安装jdk+jmeter-
- Android 上传头像
- 搜索与机器学习
- java--Struts2入门示例教程(五)
- 如何查看oracle trace 文件
- VS2013主题&配色方案
- docker exec 运行命令
- LeetCode 5 Longest Palindromic Substring
- docker exec 运行命令
- docker exec 运行命令
- HTML 词汇
- JSON基础
- linux安装boost库
- 后台时间返回前台变一串数字
- RGBD物体识别(3)--ubuntu安装opencv3和opencv-contrib
- BZOJ 3638 k-Maximum Subsequence Sum
- 获取窗口大小
- Android 五大布局