文档章节

android 可以自动换行的 layout

n
 nibilly
发布于 2015/06/02 17:59
字数 234
阅读 15
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

public class InviteFrientView extends RelativeLayout {
        int mLeft, mRight, mTop, mBottom, currentBottom;
        Hashtable<View, Position> map = new Hashtable<View, InviteFrientView.Position>();
        
        public InviteFrientView(Context context, AttributeSet attrs, int defStyle) {
                super(context, attrs, defStyle);
        }
        public InviteFrientView(Context context, AttributeSet attrs) {
                super(context, attrs);
        }
        public InviteFrientView(Context context) {
                super(context);
        }
        @Override
        protected void onLayout(boolean changed, int l, int t, int r, int b) {
                // TODO Auto-generated method stub
                int count = getChildCount();
                for (int i = 0; i < count; i++) {
                        View child = getChildAt(i);
                        Position pos = map.get(child);
                        if (pos != null) {
                                child.layout(pos.left, pos.top, pos.right, pos.bottom);
                        } else {
                                Log.i("MyLayout", "error");
                        }
                }
        }
        public int getPosition(int IndexInRow, int childIndex) {
                if (IndexInRow > 0) {
                        return getPosition(IndexInRow - 1, childIndex - 1)
                                        + getChildAt(childIndex - 1).getMeasuredWidth()+10;
                }
                return 0;
        }
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                // TODO Auto-generated method stub
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
                int width = MeasureSpec.getSize(widthMeasureSpec);
                mLeft = 0;
                mRight = 0;
                mTop = 0;
                mBottom = 0;
                int j = 0;
                int count = getChildCount();
                for (int i = 0; i < count; i++) {
                        Position position = new Position();
                        View view = getChildAt(i);
                        mLeft = getPosition(i - j, i);
                        mRight = mLeft + view.getMeasuredWidth();
                        if (mRight >= width) {
                                j = i;
                                mLeft = getPosition(i - j, i);
                                mRight = mLeft + view.getMeasuredWidth();
                                mTop += getChildAt(i).getMeasuredHeight()+15;
                        }
                        mBottom = mTop + view.getMeasuredHeight();
                        position.left = mLeft;
                        position.top = mTop;
                        position.right = mRight;
                        position.bottom = mBottom;
                        map.put(view, position);
                }
                setMeasuredDimension(width, mBottom);
        }
        private class Position {
                int left, top, right, bottom;
        }
}

本文转载自:http://www.eoeandroid.com/thread-157736-1-1.html

n
粉丝 14
博文 206
码字总数 43498
作品 0
厦门
私信 提问
android布局求助..

这是我的布局代码: LinearLayout里面嵌套一个LinearLayout 和RelativeLayout, RelativeLayout和 LinearLayout 是分开了 android:layout_weight 一个是设置的是1 一个是2 但是当没有imagevi...

小0
2011/07/22
705
5
Canvas上drawText的进阶

前言 使用Canvas的drawText绘制文本是不会自动换行的,即使一个很长很长的字符串,drawText也只显示一行,超出部分被隐藏在屏幕之外。 那么TextView这样的控件是如何处理这个问题的呢?实际上...

街角的小丑
2018/05/17
351
0
Android EditText

EditText继承关系:View-->TextView-->EditText   EditText的属性很多,这里介绍几个: android:hint="请输入数字!"//设置显示在空间上的提示信息 android:numeric="integer"//设置只能输......

amigos_wu
2012/06/20
879
0
android (4)控件的xml属性

android:id 为控件指定相应的ID。android:text 指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串。android:textSize 指定控件当中字体的大小。android:backg...

souldepth
2014/07/29
1K
0
浅谈android4.0开发之GridLayout布局

本文重点讲述了自android4.0版本后新增的GridLayout网格布局的一些基本内容,并在此基础上实现了一个简单的计算器布局框架。通过本文,您可以了解到一些android UI开发的新特性,并能够实现相...

mutouzhang
2014/03/28
220
1

没有更多内容

加载失败,请刷新页面

加载更多

如何更改iOS应用程序的名称?

我前几天用一个愚蠢的开发代码名称开始了一个iPhone项目,现在我想改变项目的名称,因为它已经接近完成了。 但是我不知道如何使用Xcode来做这件事,尝试在info.plist文件中更改应用程序的名称...

技术盛宴
28分钟前
3
0
关于win10tensorflow的配置(CPU+GPU)

主要内容 CPU篇 GPU篇 【前期准备与注意事项】 环境:window1064位+python36(37)+CUDA9.0+cuDNN7.6+tensorflow_gpu-1.12.0 软件:anaconda+pycharm 硬件:有nvidia显卡的笔记本或台式(非A...

放只虎归个山
37分钟前
3
0
C#中的多行字符串文字

有没有一种简单的方法可以在C#中创建多行字符串文字? 这是我现在所拥有的: string query = "SELECT foo, bar"+ " FROM table"+ " WHERE id = 42"; 我知道PHP有 <<<BLOCKBLOCK; C#是......

javail
44分钟前
4
0
微信支付之小微商户扫盲!支持信用卡,免营业执照!

微信支付商户申请面向线下小微商户开放,符合条件的微信支付服务商可为小微商户发起接入申请。无需营业执照。 小微商户日收款额度为5万元~30万元 。 信用卡支付日限额为1千;月限额1万。 结算...

吴伟祥
今天
4
0
大话SDWebImage(三)-- 图片下载层

四、图片下载层 SDWebImageDownloader是处理图片下载的类 4.1 图片下载步骤 首先介绍下dispatch_barrier,GCD中的dispatch_barrier目的是在并发队列实现串行的效果,创建下载任务SDWebImageD...

aron1992
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部