- 浏览: 5777121 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
一个很简单的Item布局,我只要让它由上而下排列,文字居中
然后代码这样写:很标准的使用方式吧?
问题来了,无论你怎么设置item中各元素的layout_width是match_parent,都无法让文字居中,为什么?
这个问题还得从android的LayoutInflater.from(context).inflate(...)源码下手,
inflater在inflate一个xml时,需要知道parent的类型,才能生成对应的LayoutParams,才可以把xml根节点的attrs(如layout_width)读进去,代码如下:
如果parent传进去为null,生成的View的LayoutParams为null,在RecyclerView.addView时,发现LayoutParams为null,则生成默认的LayoutParams,
所以无论无论你怎么写,最外层的LinearLayout宽度为WRAP_CONTENT,如果那三个点的宽度为6dp,那么整个View的宽度也为6dp,所以无法居中。
所以要解决照这个问题需要在inflate的时候将parent传进去,如:
同时,最后一个参数设置成false,如果不填该参数则抛异常,说先要removeAllViews()
衍生1,为何ListView加进去就是MATCH_PARENT的?
因为AbsListView重写的generateDefaultLayoutParams方法为
衍生2,为何高度只能用minHeight控制?
同理,layout.xml根节点的attrs属性没被写到LayoutParams中!所以使用minHeight来控制高度的做法是可笑的!你所要做的是在inflate时把parent传进去!
RecyclerView自定义LayoutManager,打造不规则布局
http://blog.csdn.net/qibin0506/article/details/52676670
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/item_0" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="8dp" android:textColor="@color/grayDark" android:textSize="@dimen/font_2xbig" /> </LinearLayout>
然后代码这样写:很标准的使用方式吧?
recyclerView = (RecyclerView) findViewById(R.id.recyclerView); recyclerView.setHasFixedSize(true); recyclerView.addItemDecoration(new DividerGridItemDecoration(this)); recyclerView.setItemAnimator(new DefaultItemAnimator()); LinearLayoutManager manager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); // GridLayoutManager manager = new GridLayoutManager(this, 2); recyclerView.setLayoutManager(manager); recyclerView.setAdapter(adapter...);
问题来了,无论你怎么设置item中各元素的layout_width是match_parent,都无法让文字居中,为什么?
这个问题还得从android的LayoutInflater.from(context).inflate(...)源码下手,
inflater在inflate一个xml时,需要知道parent的类型,才能生成对应的LayoutParams,才可以把xml根节点的attrs(如layout_width)读进去,代码如下:
// android.view.LayoutInflater public View inflate(XmlPullParser parser, @Nullable ViewGroup root, boolean attachToRoot) { synchronized (mConstructorArgs) { ... // Temp is the root view that was found in the xml final View temp = createViewFromTag(root, name, inflaterContext, attrs); ViewGroup.LayoutParams params = null; if (root != null) { if (DEBUG) { System.out.println("Creating params from root: " + root); } // Create layout params that match root, if supplied params = root.generateLayoutParams(attrs); if (!attachToRoot) { // Set the layout params for temp if we are not // attaching. (If we are, we use addView, below) temp.setLayoutParams(params); } } ... }
如果parent传进去为null,生成的View的LayoutParams为null,在RecyclerView.addView时,发现LayoutParams为null,则生成默认的LayoutParams,
// android.view.ViewGroup protected LayoutParams generateDefaultLayoutParams() { return new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); }
所以无论无论你怎么写,最外层的LinearLayout宽度为WRAP_CONTENT,如果那三个点的宽度为6dp,那么整个View的宽度也为6dp,所以无法居中。
所以要解决照这个问题需要在inflate的时候将parent传进去,如:
result = new DividerHolder(mInflater.inflate(R.layout.divider, parent, false));
同时,最后一个参数设置成false,如果不填该参数则抛异常,说先要removeAllViews()
衍生1,为何ListView加进去就是MATCH_PARENT的?
因为AbsListView重写的generateDefaultLayoutParams方法为
// android.widget.AbsListView @Override protected ViewGroup.LayoutParams generateDefaultLayoutParams() { return new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0); }
衍生2,为何高度只能用minHeight控制?
同理,layout.xml根节点的attrs属性没被写到LayoutParams中!所以使用minHeight来控制高度的做法是可笑的!你所要做的是在inflate时把parent传进去!
RecyclerView自定义LayoutManager,打造不规则布局
http://blog.csdn.net/qibin0506/article/details/52676670
发表评论
-
某些android手机获取不到IMEI问题
2018-08-21 14:17 7494某些山寨机可能拿不到IMEI 如果非要IMEI可以模拟一个 ... -
APK安装成功后点击"打开"再按Home键应用会重启的问题
2018-08-21 14:13 2711安装系统SD卡里面的apk或者原有的程序更新版本的时候, ... -
使用volley链接Https地址时报SSLHandshakeException
2018-08-21 14:06 2032在真实设备上出现以下错误 ︰ Volley error: ... -
PhotoView+Viewpager双指缩放的时候出现pointerIndex out of range问题
2017-07-10 14:30 4186PhotoView+Viewpager开发图集效果的时候,在某 ... -
Android6.0权限封装
2017-04-01 12:04 1526简介 Android6.0中对权限分为了一般权限和危险权限。 ... -
实现点击 WebView 中的图片,调用原生控件展示图片
2017-04-01 11:14 2744现在有很多时候,我们的 App 都进行了混合开发,而最简单,最 ... -
Android 方法引用数超过 65535 优雅解决
2017-03-31 09:37 1475随着应用不断迭代更新,业务线的扩展,应用越来越大(比如:集成了 ... -
android引用资源@与属性?备忘单
2017-03-30 10:09 1235几天前我偶然发现了我A ... -
ViewPager 与SwipeRefreshLayout,RecyclerView,ScrollView滑动冲突解决方法
2017-03-30 09:55 6513ViewPager 作为一个横向滚动的控件, 在 ViewGr ... -
Android中一些你可能没注意的小效果实现
2017-02-15 21:09 0http://www.see-source.com/blog/ ... -
Android热修复:Andfix和Hotfix,两种方案的比较与实现
2017-02-15 21:00 0http://www.see-source.com/blog/ ... -
Android 从网页中跳转到本地App
2017-01-11 09:27 1823我们在使用微信、QQ、京东等app的时候,会发现有时候通过他们 ... -
Activity的启动模式和onNewIntent
2016-12-28 09:10 1292一、启动模式介绍 启 ... -
android5.0使用Notification报RemoteServiceException的解决办法
2016-08-31 16:13 11462有时android5.0下使用Notification会报如下 ... -
sqlite3:not found 解决方法
2015-12-08 16:03 2499最最最重要,先root你的手机吧 sqlite3 为一个可 ... -
隐藏底部虚拟键NavigationBar实现全屏
2015-10-08 17:20 9798import android.app.Activity; ... -
服务端执行慢或网络延迟时,Volley多次发送请求的问题
2015-07-27 15:40 6937原文: Android Volley double post ... -
如何获取 Android 设备的CPU核数、时钟频率以及内存大小
2015-06-30 17:04 4321原帖: http://www.jianshu.com/p/f7 ... -
android点滴5
2015-04-10 17:32 2003一些小效果的实现 http://www.see-source. ... -
SwipeRefreshLayout和ListView的EmptyView共存冲突的问题
2015-01-20 11:47 18566SwipeRefreshLayout是android官方的下拉 ...
相关推荐
RecyclerView横向滑动Item居中的问题,包括Item居中放大的效果,拖动时,目前在机器上自测可用。
android居中显示item的横向recyclerview,从中间往两边显示,当数据少的时候是从中间往两边展开,当数据多的时候占满屏幕
在电视界面内,焦点随着用户点击遥控器的方向键而移动,移动到单行列表边缘位置时,仍继续向屏幕...- 当列表内容超过一屏,焦点固定居中,内容项反向移动。 - 列表内容不足一屏时,焦点可移动到列表的最后一个选项。
本次的需求是通过指定position来控制条目滚动,并且要滚动到指定到中间的位置。本次的需求是通过指定position来控制条目滚动,并且要滚动到指定到中间的位置。
一个用RecyclerView实现的画廊效果,被选中item居中放大,效果很自然。
AndroidTV中自定义RecyclerView 让当前焦点item显示在中间,调用smoothToCenter(pos)就可以。
尤其是类似Recyclerview这样本身带有滑动效果,为了醒目的显示当前焦点在什么位置,需要滑动的时候回添加大量的动画、高亮、阴影等效果。 同样,让焦点位置不变而列表主动滑动也是一种常见的提醒焦点的手段。...
实现当item的宽度小于RecyclerView的宽度时候,则居中显示
Recyclerview实现滑动放大ItemView,原创不易,请宝宝们支持一下吧
主要介绍了Android RecyclerView item选中放大被遮挡问题详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Android开发,基于RecyclerView实现照片画廊效果,选中位置居中显示,实现了第一个项目居中,最后一个项目居中,实现了RecyclerView平滑滑动
代码为博客的示例代码:有问题博客留言:http://blog.csdn.net/lmj623565791/article/details/38173061
实现GridView的横向滑动,合并item,解决item放大动画被遮挡的问题
ViewHolder通过保存item中使用到的控件的引用来减少findViewById的调用,以此使ListView滑动得更加顺畅。但这种模式在listview中即使不使用也无妨。 换言之,在ListView中你不考虑复用的问题也可以,只是你牺牲了...
该库是基于RecyclerView的可滚动列表的实现,其中当前项目居中,并且可以通过滑动来更改。 它类似于ViewPager,但是您可以快速轻松地创建布局,在该布局中,与当前选定视图相邻的视图在屏幕上部分或完全可见。 ...