自定义控件 流式布局

package com.example.layout;import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;import com.bwei.chenguoxing20181203.MainActivity;
import com.bwei.chenguoxing20181203.R;public class FlowLayout extends FrameLayout {private int text_size;private int text_color;public FlowLayout(@NonNull Context context) {super(context);}public FlowLayout(@NonNull Context context, @Nullable AttributeSet attrs) {super(context, attrs);TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.flow);text_color = array.getInt(R.styleable.flow_text_color, 0xFF0000FF);text_size = array.getInt(R.styleable.flow_text_size, 0);}public FlowLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.flow);text_color = array.getInt(R.styleable.flow_text_color, 0xFF0000FF);text_size = array.getInt(R.styleable.flow_text_size, 0);}public void getData(final String data){TextView textView = (TextView) View.inflate(getContext(),R.layout.text_layout,null);textView.setText(data);textView.setTextColor(text_color);textView.setTextSize(text_size);FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,FrameLayout.LayoutParams.WRAP_CONTENT);textView.setLayoutParams(layoutParams);addView(textView);textView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(getContext(),data,Toast.LENGTH_SHORT).show();}});}//重写onMeasure@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);}//重写onDraw@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);}//重写onLayout@Overrideprotected void onLayout(boolean changed, int left, int top, int right, int bottom) {super.onLayout(changed, left, top, right, bottom);int width = getWidth();int row = 0;int disWidth = 20;for (int i = 0; i < getChildCount(); i++) {View view = getChildAt(i);int viewWidth = view.getWidth();int viewHeight = view.getHeight();if (disWidth+viewWidth>width){row++;disWidth=20;}view.layout(disWidth,row*viewHeight,disWidth+viewWidth,(row+1)*viewHeight);disWidth+=viewWidth;}}
}

文字布局

<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="20dp"android:textSize="20dp"android:text="标题">

自定义属性

<?xml version="1.0" encoding="utf-8"?>
<resources><declare-styleable name="flow"><attr name="text_size" format="integer"/><attr name="text_color" format="integer"/></declare-styleable>
</resources>

使用控件

<com.bwei.layout.FlowLayoutandroid:id="@+id/flow_1"android:layout_width="match_parent"android:layout_height="200dp"app:text_size="20"app:text_color="0xFFFF0000"></com.bwei.layout.FlowLayout>

自定义控件 流式布局相关推荐

  1. 自定义控件 - 流式布局(CofferFlowLayout)

    自定义控件 - 流式布局(CofferFlowLayout) 先看效果图: 简介 为了方便大家理解自定义View里的一些细节点,我这里把开发者模式里的"显示布局边界"打开了.这个D ...

  2. 自定义控件 - 流式布局:TagFlowLayout

    在项目中需要用到流式布局的样式,此文学习鸿洋大神的FlowLayout控件,学习使用一下.出自 http://blog.csdn.net/lmj623565791/article/details/38 ...

  3. 自定义控件 - 流式布局(FlowLayout)

    效果图 item 布局文件kingoit_flow_layout <?xml version="1.0" encoding="utf-8"?> &l ...

  4. 自定义 FlowLayout流式布局搜索框 加 GreenDao存取搜索记录,使用RecyclerView展示

    输入框布局的shape <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android ...

  5. Android自定义控件之流式布局

    效果图: 一.首先创建我 们的自定义流式布局 public class FlowLayoutView extends ViewGroup {public FlowLayoutView(Context ...

  6. 自定义控件:流式布局

    实现代码 public class FlowLayout extends ViewGroup {private List<Line> mLines = new ArrayList<L ...

  7. android自定义流式布局思路,Android 自定义控件基础-流式布局

    什么是流式布局?其实我们在平时遇到过,只是有可能叫不出它的名字. 如图: 如上图,就是一个流式布局的样式. &esmp;这里,将记录一下怎么实现这个功能.其实实现这个功能的方法,就是自定义Vi ...

  8. 自定义View----滑动刻度尺与流式布局 实例(四)

    2019独角兽企业重金招聘Python工程师标准>>> 近在系统学习自定义View这一块的知识,前面几篇基本都是理论知识,这篇博客着重从实战来加强对自定义View的理解与运用.实现的 ...

  9. Android FlowLayout流式布局

    最近使用APP的时候经常看到有 这种流式布局 ,今天我就跟大家一起来动手撸一个这种自定义控件. 首先说一下自定义控件的流程: 自定义控件一般要么继承View要么继承ViewGroup View的自定义 ...

最新文章

  1. Hadoop 伪分布式 配置文件详情
  2. mysql服务不能启动的几大原因
  3. JVM调优 dump文件怎么生成和分析
  4. 下列关于线程调度的叙述中,错误的是()。
  5. 电脑重启 硬件问题引发的人品问题
  6. python对lxml解析html得到的xpath路径去除()、[]得到模式路径
  7. ssh连接本地虚拟机
  8. 三妈式初音miku_【MMD模型】三妈式初音 Appearance Miku 原版
  9. thinkphp开发码支付系统/三网免挂/微信金额免输入/源支付5.8/打造更专业的聚合免签支付系统带云端
  10. OpenWiFi简介与学习记录
  11. 2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势(上)...
  12. 分享5:我常用的一款动画屏幕录制软件
  13. 计算机关闭自带杀毒,Win10专业版系统中关闭自带杀毒软件操作方法
  14. 计算机指纹识别的原理步骤,指纹识别技术的基本原理及过程
  15. tekton pipeline资源
  16. 【语音去噪】基于切比雪夫+椭圆形低通滤波器语音去噪附GUI界面
  17. 比较两组数据的差异用什么图更直观_你真的懂如何展示数据吗?
  18. IE6调试JS_se7en3_新浪博客
  19. 基于树莓派和LD3320模块的语音识别控制
  20. 阿里云ecs安全组管理(双可变宽带公网出口)

热门文章

  1. 推荐一个学习Linux命令的网站
  2. LeetCode 606. 根据二叉树创建字符串题解
  3. 阿德莱德大学语言班成绩为C,阿德莱德大学语言要求(包括雅思、托福、GRE、GMAT)...
  4. 最早成立的计算机学校,中国最早的四大工学院
  5. gof23 设计模式 各个模式代码demo
  6. 2016年阿里巴巴、腾讯等公司暑期实习面试经验分享
  7. python生成不对称正弦波与傅里叶级数分解
  8. 既不是业界首个也非框架,阿里妈妈的XDL到底应该怎么理解?
  9. 我的世界java旁观者模式_我的世界如何切换到旁观模式
  10. 自己写的忽略大小写查找字符串的子串的函数