自定义控件 流式布局
自定义控件 流式布局
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>
自定义控件 流式布局相关推荐
- 自定义控件 - 流式布局(CofferFlowLayout)
自定义控件 - 流式布局(CofferFlowLayout) 先看效果图: 简介 为了方便大家理解自定义View里的一些细节点,我这里把开发者模式里的"显示布局边界"打开了.这个D ...
- 自定义控件 - 流式布局:TagFlowLayout
在项目中需要用到流式布局的样式,此文学习鸿洋大神的FlowLayout控件,学习使用一下.出自 http://blog.csdn.net/lmj623565791/article/details/38 ...
- 自定义控件 - 流式布局(FlowLayout)
效果图 item 布局文件kingoit_flow_layout <?xml version="1.0" encoding="utf-8"?> &l ...
- 自定义 FlowLayout流式布局搜索框 加 GreenDao存取搜索记录,使用RecyclerView展示
输入框布局的shape <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android ...
- Android自定义控件之流式布局
效果图: 一.首先创建我 们的自定义流式布局 public class FlowLayoutView extends ViewGroup {public FlowLayoutView(Context ...
- 自定义控件:流式布局
实现代码 public class FlowLayout extends ViewGroup {private List<Line> mLines = new ArrayList<L ...
- android自定义流式布局思路,Android 自定义控件基础-流式布局
什么是流式布局?其实我们在平时遇到过,只是有可能叫不出它的名字. 如图: 如上图,就是一个流式布局的样式. &esmp;这里,将记录一下怎么实现这个功能.其实实现这个功能的方法,就是自定义Vi ...
- 自定义View----滑动刻度尺与流式布局 实例(四)
2019独角兽企业重金招聘Python工程师标准>>> 近在系统学习自定义View这一块的知识,前面几篇基本都是理论知识,这篇博客着重从实战来加强对自定义View的理解与运用.实现的 ...
- Android FlowLayout流式布局
最近使用APP的时候经常看到有 这种流式布局 ,今天我就跟大家一起来动手撸一个这种自定义控件. 首先说一下自定义控件的流程: 自定义控件一般要么继承View要么继承ViewGroup View的自定义 ...
最新文章
- Hadoop 伪分布式 配置文件详情
- mysql服务不能启动的几大原因
- JVM调优 dump文件怎么生成和分析
- 下列关于线程调度的叙述中,错误的是()。
- 电脑重启 硬件问题引发的人品问题
- python对lxml解析html得到的xpath路径去除()、[]得到模式路径
- ssh连接本地虚拟机
- 三妈式初音miku_【MMD模型】三妈式初音 Appearance Miku 原版
- thinkphp开发码支付系统/三网免挂/微信金额免输入/源支付5.8/打造更专业的聚合免签支付系统带云端
- OpenWiFi简介与学习记录
- 2018年AI和ML(NLP、计算机视觉、强化学习)技术总结和2019年趋势(上)...
- 分享5:我常用的一款动画屏幕录制软件
- 计算机关闭自带杀毒,Win10专业版系统中关闭自带杀毒软件操作方法
- 计算机指纹识别的原理步骤,指纹识别技术的基本原理及过程
- tekton pipeline资源
- 【语音去噪】基于切比雪夫+椭圆形低通滤波器语音去噪附GUI界面
- 比较两组数据的差异用什么图更直观_你真的懂如何展示数据吗?
- IE6调试JS_se7en3_新浪博客
- 基于树莓派和LD3320模块的语音识别控制
- 阿里云ecs安全组管理(双可变宽带公网出口)
热门文章
- 推荐一个学习Linux命令的网站
- LeetCode 606. 根据二叉树创建字符串题解
- 阿德莱德大学语言班成绩为C,阿德莱德大学语言要求(包括雅思、托福、GRE、GMAT)...
- 最早成立的计算机学校,中国最早的四大工学院
- gof23 设计模式 各个模式代码demo
- 2016年阿里巴巴、腾讯等公司暑期实习面试经验分享
- python生成不对称正弦波与傅里叶级数分解
- 既不是业界首个也非框架,阿里妈妈的XDL到底应该怎么理解?
- 我的世界java旁观者模式_我的世界如何切换到旁观模式
- 自己写的忽略大小写查找字符串的子串的函数