来源:蜘蛛抓取(WebSpider)
时间:2016-10-28 05:59
标签:
swing gridlayout
NineGridLayout-master
Description: &&android 9 Palace grid
File list:
NineGridLayout-master
NineGridLayout-master\.gitignore
NineGridLayout-master\LICENSE
NineGridLayout-master\README.md
NineGridLayout-master\app
NineGridLayout-master\app\.gitignore
NineGridLayout-master\app\build.gradle
NineGridLayout-master\app\proguard-rules.pro
NineGridLayout-master\app\src
NineGridLayout-master\app\src\androidTest
NineGridLayout-master\app\src\androidTest\java
NineGridLayout-master\app\src\androidTest\java\com
NineGridLayout-master\app\src\androidTest\java\com\github
NineGridLayout-master\app\src\androidTest\java\com\github\mzule
NineGridLayout-master\app\src\androidTest\java\com\github\mzule\ninegridlayout
NineGridLayout-master\app\src\androidTest\java\com\github\mzule\ninegridlayout\sample
NineGridLayout-master\app\src\androidTest\java\com\github\mzule\ninegridlayout\sample\ApplicationTest.java
NineGridLayout-master\app\src\main
NineGridLayout-master\app\src\main\AndroidManifest.xml
NineGridLayout-master\app\src\main\java
NineGridLayout-master\app\src\main\java\com
NineGridLayout-master\app\src\main\java\com\github
NineGridLayout-master\app\src\main\java\com\github\mzule
NineGridLayout-master\app\src\main\java\com\github\mzule\ninegridlayout
NineGridLayout-master\app\src\main\java\com\github\mzule\ninegridlayout\sample
NineGridLayout-master\app\src\main\java\com\github\mzule\ninegridlayout\sample\ImageNineGridView.java
NineGridLayout-master\app\src\main\java\com\github\mzule\ninegridlayout\sample\MainActivity.java
NineGridLayout-master\app\src\main\java\com\github\mzule\ninegridlayout\sample\Post.java
NineGridLayout-master\app\src\main\java\com\github\mzule\ninegridlayout\sample\PostFactory.java
NineGridLayout-master\app\src\main\java\com\github\mzule\ninegridlayout\sample\Tinter.java
NineGridLayout-master\app\src\main\res
NineGridLayout-master\app\src\main\res\layout
NineGridLayout-master\app\src\main\res\layout\activity_main.xml
NineGridLayout-master\app\src\main\res\layout\item_image_grid.xml
NineGridLayout-master\app\src\main\res\layout\item_post.xml
NineGridLayout-master\app\src\main\res\mipmap-hdpi
NineGridLayout-master\app\src\main\res\mipmap-hdpi\ic_launcher.png
NineGridLayout-master\app\src\main\res\mipmap-mdpi
NineGridLayout-master\app\src\main\res\mipmap-mdpi\ic_launcher.png
NineGridLayout-master\app\src\main\res\mipmap-xhdpi
NineGridLayout-master\app\src\main\res\mipmap-xhdpi\ic_launcher.png
NineGridLayout-master\app\src\main\res\mipmap-xxhdpi
NineGridLayout-master\app\src\main\res\mipmap-xxhdpi\ic_launcher.png
NineGridLayout-master\app\src\main\res\mipmap-xxxhdpi
NineGridLayout-master\app\src\main\res\mipmap-xxxhdpi\ic_launcher.png
NineGridLayout-master\app\src\main\res\values-w820dp
NineGridLayout-master\app\src\main\res\values-w820dp\dimens.xml
NineGridLayout-master\app\src\main\res\values
NineGridLayout-master\app\src\main\res\values\colors.xml
NineGridLayout-master\app\src\main\res\values\dimens.xml
NineGridLayout-master\app\src\main\res\values\strings.xml
NineGridLayout-master\app\src\main\res\values\styles.xml
NineGridLayout-master\build.gradle
NineGridLayout-master\gradle.properties
NineGridLayout-master\gradle
NineGridLayout-master\gradle\wrapper
NineGridLayout-master\gradle\wrapper\gradle-wrapper.jar
NineGridLayout-master\gradle\wrapper\gradle-wrapper.properties
NineGridLayout-master\gradlew
NineGridLayout-master\gradlew.bat
NineGridLayout-master\ninegridlayout
NineGridLayout-master\ninegridlayout\.gitignore
NineGridLayout-master\ninegridlayout\build.gradle
NineGridLayout-master\ninegridlayout\proguard-rules.pro
NineGridLayout-master\ninegridlayout\src
NineGridLayout-master\ninegridlayout\src\androidTest
NineGridLayout-master\ninegridlayout\src\androidTest\java
NineGridLayout-master\ninegridlayout\src\androidTest\java\com
NineGridLayout-master\ninegridlayout\src\androidTest\java\com\github
NineGridLayout-master\ninegridlayout\src\androidTest\java\com\github\mzule
NineGridLayout-master\ninegridlayout\src\androidTest\java\com\github\mzule\ninegridlayout
NineGridLayout-master\ninegridlayout\src\androidTest\java\com\github\mzule\ninegridlayout\ApplicationTest.java
NineGridLayout-master\ninegridlayout\src\main
NineGridLayout-master\ninegridlayout\src\main\AndroidManifest.xml
NineGridLayout-master\ninegridlayout\src\main\java
NineGridLayout-master\ninegridlayout\src\main\java\com
NineGridLayout-master\ninegridlayout\src\main\java\com\github
NineGridLayout-master\ninegridlayout\src\main\java\com\github\mzule
NineGridLayout-master\ninegridlayout\src\main\java\com\github\mzule\ninegridlayout
NineGridLayout-master\ninegridlayout\src\main\java\com\github\mzule\ninegridlayout\AbstractNineGridLayout.java
NineGridLayout-master\ninegridlayout\src\main\java\com\github\mzule\ninegridlayout\NineGridLayout.java
NineGridLayout-master\ninegridlayout\src\main\java\com\github\mzule\ninegridlayout\ViewGetter.java
NineGridLayout-master\ninegridlayout\src\main\res
NineGridLayout-master\ninegridlayout\src\main\res\values
NineGridLayout-master\ninegridlayout\src\main\res\values\attrs.xml
NineGridLayout-master\ninegridlayout\src\main\res\values\strings.xml
NineGridLayout-master\settings.gradle
Download users:
Relate files:
Favorite users:本帖子已过去太久远了,不再提供回复功能。BiliBili客户端中瀑布流的图片是怎么做到宽度固定,根据图片比例来设置长度呢? - 知乎316被浏览11872分享邀请回答/intl/zh-cn/reference/android/support/v7/widget/StaggeredGridLayoutManager.html)推荐第二种(RecyclerView+ StaggeredGridLayoutManager)做法。适应图片高度宽度的方法,最好的办法在服务端就有图片尺寸的数据返回,根据图片大小设置itemview的高宽(方法很多,可以动态修改layoutparams或者扩展view使用setMeasuredDimension)
如果因为条件限制服务端不能返回正确的图片尺寸,可以自己预读并缓存图片头部信息拿到图片尺寸(使用),因为只是读取头部字节所以效率并不会有太大影响.回答完毕, 最后打个广告,欢迎大家安装并使用哔哩哔哩动画客户端 , 是倾注了我们大量心思与爱(?)研发的一款产品,感谢.
另外客户端招聘开发攻城狮,欢迎对B站对移动端项目感兴趣的同学投简历到wangyongrong#26785 条评论分享收藏感谢收起61 条评论分享收藏感谢收起查看更多回答1 个回答被折叠()4713人阅读
使用下面的代码,默认一行3个child
recyclerView.setLayoutManager(new GridLayoutManager(activity, 3) {
public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, int widthSpec, int heightSpec) {
super.onMeasure(recycler, state, widthSpec, heightSpec);
int measuredWidth = recyclerView.getMeasuredWidth();
int measuredHeight = recyclerView.getMeasuredHeight();
int myMeasureHeight = 0;
int count = state.getItemCount();
for (int i = 0; i & i++) {
View view = recycler.getViewForPosition(i);
if (view != null) {
if (myMeasureHeight & measuredHeight && i % 3 == 0) {
RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams();
int childWidthSpec = ViewGroup.getChildMeasureSpec(widthSpec,
getPaddingLeft() + getPaddingRight(), p.width);
int childHeightSpec = ViewGroup.getChildMeasureSpec(heightSpec,
getPaddingTop() + getPaddingBottom(), p.height);
view.measure(childWidthSpec, childHeightSpec);
myMeasureHeight += view.getMeasuredHeight() + p.bottomMargin + p.topM
recycler.recycleView(view);
Log.i(&Height&, && + Math.min(measuredHeight, myMeasureHeight));
setMeasuredDimension(measuredWidth, Math.min(measuredHeight, myMeasureHeight));
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9841次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'NineGridView项目地址:简介:一个九宫格自定义控件,实现类似微信和微博的九宫格图片显示更多:&&&&&&标签:1.简介
这是一个用于实现像微信朋友圈和微博的类似的九宫格图片展示控件,通过自定义 viewgroup 实现,使用方便。
多图根据屏幕适配,单张图片时需要自己指定图片的宽高;
2.使用方法
compile 'com.w4lle.library:NineLayout:1.0.0'
在项目的 layout 文件中添加如下 xml 即可加入到布局文件
&com.w4lle.library.NineGridlayout
android:layout_marginTop=&8dp&
android:id=&@+id/iv_ngrid_layout&
android:layout_height=&wrap_content&
android:layout_width=&match_parent& /&
支持 padding 和 margin
Java Api :
写好自己的 Adapter 继承自 NineGridAdapter:
class Adapter extends NineGridAdapter {
public Adapter(Context context, List list) {
super(context, list);
public int getCount() {
return (list == null) ? 0 : list.size();
public String getUrl(int position) {
return getItem(position) == null ? null : ((Image)getItem(position)).getUrl();
public Object getItem(int position) {
return (list == null) ? null : list.get(position);
public long getItemId(int position) {
public View getView(int i) {
ImageView iv = new ImageView(context);
iv.setScaleType(ImageView.ScaleType.CENTER_CROP);
iv.setBackgroundColor(Color.parseColor(&#f5f5f5&));
Picasso.with(context).load(getUrl(i)).placeholder(new ColorDrawable(Color.parseColor(&#f5f5f5&))).into(iv);
代码中使用 :
adapter = new Adapter(context, image);
viewHolder.ivMore.setAdapter(adapter);
viewHolder.ivMore.setOnItemClickListerner(new NineGridlayout.OnItemClickListerner() {
public void onItemClick(View view, int position) {
//do some thing
Log.d(&onItemClick : & + position);
setsetGap //设置图片间隔
setDefaultWidth //设置单张图片时的宽度,默认 140 * density
setDefaultHeight //设置单张图片时的高度,默认 140 * density
Copyright (C) 2015 w4lle
Licensed under the Apache License, Version 2.0 (the &License&);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an &AS IS& BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.