日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 自定义flowlayout,Android 自定义ViewGroup之实现FlowLayout-标签流容器

發(fā)布時(shí)間:2024/1/23 Android 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 自定义flowlayout,Android 自定义ViewGroup之实现FlowLayout-标签流容器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本篇文章講的是Android 自定義ViewGroup之實(shí)現(xiàn)標(biāo)簽流式布局-FlowLayout,開發(fā)中我們會經(jīng)常需要實(shí)現(xiàn)類似于熱門標(biāo)簽等自動換行的流式布局的功能,網(wǎng)上也有很多這樣的FlowLayout,但不影響我對其的學(xué)習(xí)。和往常一樣,主要還是想總結(jié)一下自定義ViewGroup的開發(fā)過程以及一些需要注意的地方。此文章已經(jīng)同步到CSDN啦,歡迎訪問我的博客

按照慣例,我們先來看看效果圖

這里寫圖片描述

一、寫代碼之前,有幾個(gè)是問題是我們先要弄清楚的:

1、什么是ViewGroup:從名字上來看,它可以被翻譯為控件組,言外之意是ViewGroup內(nèi)部包含了許多個(gè)控件,是一組View。在Android的設(shè)計(jì)中,ViewGroup也繼承了View,這就意味著View本身就可以是單個(gè)控件也可以是由多個(gè)控件組成的一組控件;

2、ViewGroup的種類:常見的有LinearLayout、RelativeLayout、FrameLayout、AbsoluteLayout、GirdLayout、TableLayout。其中LinearLayout和RelativeLayout使用的最多的兩種;

3、ViewGroup的職責(zé):給childView計(jì)算出建議的寬和高和測量模式 ,然后決定childView的位置;

4、話說何為流式布局(FlowLayout):就是控件根據(jù)ViewGroup的寬,自動的從左往右添加。如果當(dāng)前行還能放得這個(gè)子View,就放到當(dāng)前行,如果當(dāng)前行剩余的空間不足于容納這個(gè)子View,則自動添加到下一行的最左邊;

二、先總結(jié)下自定義ViewGroup的步驟:

1、自定義ViewGroup的屬性

2、在ViewGroup的構(gòu)造方法中獲得我們自定義的屬性

3、重寫onMesure

4、重寫onLayout

三、ViewGroup的幾個(gè)構(gòu)造函數(shù):

1、public FlowLayout(Context context)

—>Java代碼直接new一個(gè)FlowLayout實(shí)例的時(shí)候,會調(diào)用這個(gè)只有一個(gè)參數(shù)的構(gòu)造函數(shù);

2、public FlowLayout(Context context, AttributeSet attrs)

—>在默認(rèn)的XML布局文件中創(chuàng)建的時(shí)候調(diào)用這個(gè)有兩個(gè)參數(shù)的構(gòu)造函數(shù)。AttributeSet類型的參數(shù)負(fù)責(zé)把XML布局文件中所自定義的屬性通過AttributeSet帶入到View內(nèi);

3、public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr)

—>構(gòu)造函數(shù)中第三個(gè)參數(shù)是默認(rèn)的Style,這里的默認(rèn)的Style是指它在當(dāng)前Application或者Activity所用的Theme中的默認(rèn)Style,且只有在明確調(diào)用的時(shí)候才會調(diào)用

4、public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

—>該構(gòu)造函數(shù)是在API21的時(shí)候才添加上的

四、下面我們就開始來看看自定義ViewGroup的主要代碼啦

1、自定義ViewGroup的屬性,首先在res/values/ 下建立一個(gè)attr.xml , 在里面定義我們的需要用到的屬性以及聲明相對應(yīng)屬性的取值類型

我們定義了verticalSpacing以及horizontalSpacing2個(gè)屬性,分別表示每個(gè)標(biāo)簽之間縱向間距和橫向間距,其中format是值該屬性的取值類型,format取值類型總共有10種,包括:string,color,demension,integer,enum,reference,float,boolean,fraction和flag。

2、然后在XML布局中聲明我們的自定義View

xmlns:custom="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:layout_width="match_parent"

android:layout_height="48dp"

android:background="#38353D"

android:gravity="center"

android:text="標(biāo)簽"

android:textColor="@android:color/white"

android:textSize="16dp" />

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

android:id="@+id/tv_remind"

android:layout_width="match_parent"

android:layout_height="46dp"

android:background="@android:color/white"

android:gravity="center_vertical"

android:paddingLeft="15dp"

android:text="我的標(biāo)簽(最多5個(gè)) "

android:textSize="16dp" />

android:id="@+id/tcy_my_label"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@android:color/white"

android:padding="5dp"

android:visibility="gone"

custom:horizontalSpacing="6dp"

custom:verticalSpacing="12dp" />

android:layout_width="match_parent"

android:layout_height="10dp"

android:background="#f6f6f6" />

android:layout_width="match_parent"

android:layout_height="46dp"

android:background="@android:color/white">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:paddingLeft="15dp"

android:text="推薦標(biāo)簽 "

android:textSize="16dp" />

android:layout_width="match_parent"

android:layout_height="1dp"

android:background="#f6f6f6" />

android:id="@+id/tcy_hot_label"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@android:color/white"

android:padding="5dp"

custom:horizontalSpacing="6dp"

custom:verticalSpacing="12dp" />

一定要引入xmlns:custom=”http://schemas.android.com/apk/res-auto”,Android Studio中我們可以使用res-atuo命名空間,就不用在添加自定義View全類名。

3、在View的構(gòu)造方法中,獲得我們的自定義的樣式

/**

* 每個(gè)item縱向間距

*/

private int mVerticalSpacing;

/**

* 每個(gè)item橫向間距

*/

private int mHorizontalSpacing;

public FlowLayout(Context context) {

this(context, null);

}

public FlowLayout(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public FlowLayout(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

/**

* 獲得我們所定義的自定義樣式屬性

*/

TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.FlowLayout, defStyle, 0);

for (int i = 0; i < a.getIndexCount(); i++) {

int attr = a.getIndex(i);

switch (attr) {

case R.styleable.FlowLayout_verticalSpacing:

mVerticalSpacing = a.getDimensionPixelSize(R.styleable.FlowLayout_verticalSpacing, 5);

break;

case R.styleable.FlowLayout_horizontalSpacing:

mHorizontalSpacing = a.getDimensionPixelSize(R.styleable.FlowLayout_horizontalSpacing, 10);

break;

}

}

a.recycle();

}

我們重寫了3個(gè)構(gòu)造方法,在上面的構(gòu)造方法中說過默認(rèn)的布局文件調(diào)用的是兩個(gè)參數(shù)的構(gòu)造方法,所以記得讓所有的構(gòu)造方法調(diào)用三個(gè)參數(shù)的構(gòu)造方法,然后在三個(gè)參數(shù)的構(gòu)造方法中獲得自定義屬性。

一開始一個(gè)參數(shù)的構(gòu)造方法和兩個(gè)參數(shù)的構(gòu)造方法是這樣的:

public FlowLayout(Context context) {

super(context);

}

public FlowLayout(Context context, AttributeSet attrs) {

super(context, attrs);

}

有一點(diǎn)要注意的是super應(yīng)該改成this,然后讓一個(gè)參數(shù)的構(gòu)造方法引用兩個(gè)參數(shù)的構(gòu)造方法,兩個(gè)參數(shù)的構(gòu)造方法引用三個(gè)參數(shù)的構(gòu)造方法,代碼如下:

public FlowLayout(Context context) {

this(context, null);

}

public FlowLayout(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

4、重寫onMesure方法

/**

* 負(fù)責(zé)設(shè)置子控件的測量模式和大小 根據(jù)所有子控件設(shè)置自己的寬和高

*/

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

/**

* 獲得此ViewGroup上級容器為其推薦的寬和高,以及計(jì)算模式

*/

int heighMode = MeasureSpec.getMode(heightMeasureSpec);

int heighSize = MeasureSpec.getSize(heightMeasureSpec);

int widthSize = MeasureSpec.getSize(widthMeasureSpec);

/**

* 高

*/

int height = 0;

/**

* 每一行的高度,累加至height

*/

int lineHeight = 0;

/**

* 在warp_content情況下,記錄當(dāng)前childView的左邊的一個(gè)位置

*/

int childLeft = getPaddingLeft();

/**

* 在warp_content情況下,記錄當(dāng)前childView的上邊的一個(gè)位置

*/

int childTop = getPaddingTop();

// getChildCount得到子view的數(shù)目,遍歷循環(huán)出每個(gè)子View

for (int i = 0; i < getChildCount(); i++) {

//拿到index上的子view

View childView = getChildAt(i);

// 測量每一個(gè)child的寬和高

measureChild(childView, widthMeasureSpec, heightMeasureSpec);

//當(dāng)前子空間實(shí)際占據(jù)的高度

int childHeight = childView.getMeasuredHeight();

//當(dāng)前子空間實(shí)際占據(jù)的寬度

int childWidth = childView.getMeasuredWidth();

lineHeight = Math.max(childHeight, lineHeight);// 取最大值

//如果加入當(dāng)前childView,超出最大寬度,則將目前最大寬度給width,類加height 然后開啟新行

if (childWidth + childLeft + getPaddingRight() > widthSize) {

childLeft = getPaddingLeft();// 重新開啟新行,開始記錄childLeft

childTop += mVerticalSpacing + childHeight;// 疊加當(dāng)前的高度

lineHeight = childHeight;// 開啟記錄下一行的高度

}else{

//否則累加當(dāng)前childView的寬度

childLeft += childWidth + mHorizontalSpacing;

}

}

height += childTop + lineHeight + getPaddingBottom();

setMeasuredDimension(widthSize, heighMode == MeasureSpec.EXACTLY ? heighSize : height);

}

首先首先得到其父容器傳入的測量模式和寬高的計(jì)算值,然后遍歷所有的childView,使用measureChild方法對所有的childView進(jìn)行測量。然后根據(jù)所有childView的測量得出的高得到該ViewGroup如果設(shè)置為wrap_content時(shí)的高。最后根據(jù)模式,如果是MeasureSpec.EXACTLY則直接使用父ViewGroup傳入的高,否則設(shè)置為自己計(jì)算的高,細(xì)心的朋友會問,那兒寬呢,在這里我們默認(rèn)寬為MeasureSpec.EXACTLY模式。

5、重寫onLayout方法

@Override

protected void onLayout(boolean changed, int l, int t, int r, int b) {

int width = r - l;

int childLeft = getPaddingLeft();

int childTop = getPaddingTop();

int lineHeight = 0;

//遍歷所有childView根據(jù)其寬和高,計(jì)算子控件應(yīng)該出現(xiàn)的位置

for (int i = 0; i < getChildCount(); i++) {

final View childView = getChildAt(i);

if (childView.getVisibility() == View.GONE) {

continue;

}

int childWidth = childView.getMeasuredWidth();

int childHeight = childView.getMeasuredHeight();

lineHeight = Math.max(childHeight, lineHeight);

// 如果已經(jīng)需要換行

if (childLeft + childWidth + getPaddingRight() > width) {

childLeft = getPaddingLeft();

childTop += mVerticalSpacing + lineHeight;

lineHeight = childHeight;

}

childView.layout(childLeft, childTop, childLeft + childWidth, childTop + childHeight);

childLeft += childWidth + mHorizontalSpacing;

}

}

onLayout中完成對所有childView的位置以及大小的指定

6、到此,我們對自定義ViewGroup的代碼已經(jīng)寫完了,有幾點(diǎn)要注意的:

(1)getChildAt(int index):獲得index上的子view;

(2)getChildCount():得到所有子view的數(shù)目;

(3)measureChild(childView, widthMeasureSpec, heightMeasureSpec):使用子view自身的測量方法,測量每一個(gè)child的寬和高;

回歸到主題,現(xiàn)在我們把自定義ViewGroup,實(shí)現(xiàn)FlowLayout的部分完成了,接下來的就是一些邏輯代碼了

五、下面就是一些邏輯代碼啦

1、我把FlowLayout里面完整的代碼貼出來:

package com.per.flowlayoutdome;

import android.content.Context;

import android.content.res.TypedArray;

import android.database.DataSetObserver;

import android.util.AttributeSet;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

/**

* @author: xiaolijuan

* @description: 流式布局-標(biāo)簽流容器

* @projectName: FlowLayoutDome

* @date: 2016-06-16

* @time: 16:21

*/

public class FlowLayout extends ViewGroup{

/**

* 每個(gè)item縱向間距

*/

private int mVerticalSpacing;

/**

* 每個(gè)item橫向間距

*/

private int mHorizontalSpacing;

private BaseAdapter mAdapter;

private TagItemClickListener mListener;

private DataChangeObserver mObserver;

public FlowLayout(Context context) {

this(context, null);

}

public FlowLayout(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public FlowLayout(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

/**

* 獲得我們所定義的自定義樣式屬性

*/

TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.FlowLayout, defStyle, 0);

for (int i = 0; i < a.getIndexCount(); i++) {

int attr = a.getIndex(i);

switch (attr) {

case R.styleable.FlowLayout_verticalSpacing:

mVerticalSpacing = a.getDimensionPixelSize(R.styleable.FlowLayout_verticalSpacing, 5);

break;

case R.styleable.FlowLayout_horizontalSpacing:

mHorizontalSpacing = a.getDimensionPixelSize(R.styleable.FlowLayout_horizontalSpacing, 10);

break;

}

}

a.recycle();

}

/**

* 負(fù)責(zé)設(shè)置子控件的測量模式和大小 根據(jù)所有子控件設(shè)置自己的寬和高

*/

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

/**

* 獲得此ViewGroup上級容器為其推薦的寬和高,以及計(jì)算模式

*/

int heighMode = MeasureSpec.getMode(heightMeasureSpec);

int heighSize = MeasureSpec.getSize(heightMeasureSpec);

int widthSize = MeasureSpec.getSize(widthMeasureSpec);

/**

* 高

*/

int height = 0;

/**

* 每一行的高度,累加至height

*/

int lineHeight = 0;

/**

* 在warp_content情況下,記錄當(dāng)前childView的左邊的一個(gè)位置

*/

int childLeft = getPaddingLeft();

/**

* 在warp_content情況下,記錄當(dāng)前childView的上邊的一個(gè)位置

*/

int childTop = getPaddingTop();

// getChildCount得到子view的數(shù)目,遍歷循環(huán)出每個(gè)子View

for (int i = 0; i < getChildCount(); i++) {

//拿到index上的子view

View childView = getChildAt(i);

// 測量每一個(gè)child的寬和高

measureChild(childView, widthMeasureSpec, heightMeasureSpec);

//當(dāng)前子空間實(shí)際占據(jù)的高度

int childHeight = childView.getMeasuredHeight();

//當(dāng)前子空間實(shí)際占據(jù)的寬度

int childWidth = childView.getMeasuredWidth();

lineHeight = Math.max(childHeight, lineHeight);// 取最大值

//如果加入當(dāng)前childView,超出最大寬度,則將目前最大寬度給width,類加height 然后開啟新行

if (childWidth + childLeft + getPaddingRight() > widthSize) {

childLeft = getPaddingLeft();// 重新開啟新行,開始記錄childLeft

childTop += mVerticalSpacing + childHeight;// 疊加當(dāng)前的高度

lineHeight = childHeight;// 開啟記錄下一行的高度

}else{

//否則累加當(dāng)前childView的寬度

childLeft += childWidth + mHorizontalSpacing;

}

}

height += childTop + lineHeight + getPaddingBottom();

setMeasuredDimension(widthSize, heighMode == MeasureSpec.EXACTLY ? heighSize : height);

}

@Override

protected void onLayout(boolean changed, int l, int t, int r, int b) {

int width = r - l;

int childLeft = getPaddingLeft();

int childTop = getPaddingTop();

int lineHeight = 0;

//遍歷所有childView根據(jù)其寬和高,計(jì)算子控件應(yīng)該出現(xiàn)的位置

for (int i = 0; i < getChildCount(); i++) {

final View childView = getChildAt(i);

if (childView.getVisibility() == View.GONE) {

continue;

}

int childWidth = childView.getMeasuredWidth();

int childHeight = childView.getMeasuredHeight();

lineHeight = Math.max(childHeight, lineHeight);

// 如果已經(jīng)需要換行

if (childLeft + childWidth + getPaddingRight() > width) {

childLeft = getPaddingLeft();

childTop += mVerticalSpacing + lineHeight;

lineHeight = childHeight;

}

childView.layout(childLeft, childTop, childLeft + childWidth, childTop + childHeight);

childLeft += childWidth + mHorizontalSpacing;

}

}

private void drawLayout() {

if (mAdapter == null || mAdapter.getCount() == 0) {

return;

}

removeAllViews();

for (int i = 0; i < mAdapter.getCount(); i++) {

View view = mAdapter.getView(i, null, null);

final int position = i;

view.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (mListener != null) {

mListener.itemClick(position);

}

}

});

addView(view);

}

}

public void setAdapter(BaseAdapter adapter) {

if (mAdapter == null) {

mAdapter = adapter;

if (mObserver == null) {

mObserver = new DataChangeObserver();

mAdapter.registerDataSetObserver(mObserver);

}

drawLayout();

}

}

public void setItemClickListener(TagItemClickListener mListener) {

this.mListener = mListener;

}

public interface TagItemClickListener {

void itemClick(int position);

}

class DataChangeObserver extends DataSetObserver {

@Override

public void onChanged() {

drawLayout();

}

@Override

public void onInvalidated() {

super.onInvalidated();

}

}

}

2、FlowLayoutAdapter

package com.per.flowlayoutdome;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Button;

import java.util.List;

/**

* @author: adan

* @description: 流式布局適配器

* @projectName: FlowLayoutDome

* @date: 2016-06-16

* @time: 16:22

*/

public class FlowLayoutAdapter extends BaseAdapter {

private Context mContext;

private List mList;

public FlowLayoutAdapter(Context context, List list) {

mContext = context;

mList = list;

}

@Override

public int getCount() {

return mList.size();

}

@Override

public String getItem(int position) {

return mList.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder;

if (convertView == null) {

convertView = LayoutInflater.from(mContext).inflate(

R.layout.item_tag, null);

holder = new ViewHolder();

holder.mBtnTag = (Button) convertView.findViewById(R.id.btn_tag);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

holder.mBtnTag.setText(getItem(position));

return convertView;

}

static class ViewHolder {

Button mBtnTag;

}

}

3、MainActivity

package com.per.flowlayoutdome;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.text.TextUtils;

import android.view.View;

import android.widget.TextView;

import android.widget.Toast;

import java.util.ArrayList;

import java.util.List;

public class MainActivity extends Activity {

private TextView tv_remind;

private FlowLayout tcy_my_label, tcy_hot_label;

private FlowLayoutAdapter mMyLabelAdapter, mHotLabelAdapter;

private List MyLabelLists, HotLabelLists;

private static int TAG_REQUESTCODE = 0x101;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

initData();

}

private void initView() {

tv_remind = (TextView) findViewById(R.id.tv_remind);

tcy_my_label = (FlowLayout) findViewById(R.id.tcy_my_label);

tcy_hot_label = (FlowLayout) findViewById(R.id.tcy_hot_label);

}

private void initData() {

String[] date = getResources().getStringArray(R.array.tags);

HotLabelLists = new ArrayList<>();

for (int i = 0; i < date.length; i++) {

HotLabelLists.add(date[i]);

}

mHotLabelAdapter = new FlowLayoutAdapter(this, HotLabelLists);

tcy_hot_label.setAdapter(mHotLabelAdapter);

tcy_hot_label.setItemClickListener(new TagCloudLayoutItemOnClick(1));

MyLabelLists = new ArrayList<>();

mMyLabelAdapter = new FlowLayoutAdapter(this, MyLabelLists);

tcy_my_label.setAdapter(mMyLabelAdapter);

tcy_my_label.setItemClickListener(new TagCloudLayoutItemOnClick(0));

String labels = String.valueOf(getIntent().getStringExtra("labels"));

if (!TextUtils.isEmpty(labels) && labels.length() > 0

&& !labels.equals("null")) {

String[] temp = labels.split(",");

for (int i = 0; i < temp.length; i++) {

MyLabelLists.add(temp[i]);

}

ChangeMyLabels();

}

}

/**

* 刷新我的標(biāo)簽數(shù)據(jù)

*/

private void ChangeMyLabels() {

tv_remind.setVisibility(MyLabelLists.size() > 0 ? View.GONE

: View.VISIBLE);

tcy_my_label.setVisibility(MyLabelLists.size() > 0 ? View.VISIBLE

: View.GONE);

mMyLabelAdapter.notifyDataSetChanged();

}

/**

* 標(biāo)簽的點(diǎn)擊事件

*

* @author lijuan

*/

class TagCloudLayoutItemOnClick implements FlowLayout.TagItemClickListener {

int index;

public TagCloudLayoutItemOnClick(int index) {

this.index = index;

}

@Override

public void itemClick(int position) {

switch (index) {

case 0:

MyLabelLists.remove(MyLabelLists.get(position));

ChangeMyLabels();

break;

case 1:

if (MyLabelLists.size() < 5) {

if (HotLabelLists.get(position).equals("自定義")) {

startActivityForResult(

new Intent(MainActivity.this,

AddTagActivity.class),

TAG_REQUESTCODE);

} else {

Boolean isExits = isExist(MyLabelLists,

HotLabelLists.get(position));

if (isExits) {

Toast.makeText(MainActivity.this, "此標(biāo)簽已經(jīng)添加啦", Toast.LENGTH_LONG).show();

return;

}

MyLabelLists.add(HotLabelLists.get(position));

ChangeMyLabels();

}

} else {

Toast.makeText(MainActivity.this, "最多只能添加5個(gè)標(biāo)簽", Toast.LENGTH_LONG).show();

}

break;

default:

break;

}

}

}

/**

* 將數(shù)組里面的字符串遍歷一遍,看是否存在相同標(biāo)簽

*

* @param str

* @param compareStr

* @return

*/

public static Boolean isExist(List str, String compareStr) {

Boolean isExist = false;//默認(rèn)沒有相同標(biāo)簽

for (int i = 0; i < str.size(); i++) {

if (compareStr.equals(str.get(i))) {

isExist = true;

}

}

return isExist;

}

/**

* 回傳數(shù)據(jù)

*/

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (TAG_REQUESTCODE == requestCode) {

if (resultCode == AddTagActivity.TAG_RESULTCODE) {

String label = data.getStringExtra("tags");

MyLabelLists.add(label);

ChangeMyLabels();

}

}

}

}

4、AddTagActivity

package com.per.flowlayoutdome;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.text.Editable;

import android.text.TextUtils;

import android.text.TextWatcher;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

/**

* @author: xiaolijuan

* @description: 添加自定義標(biāo)簽

* @date: 2016-06-10

* @time: 14:37

*/

public class AddTagActivity extends Activity implements View.OnClickListener{

private EditText mEtLabel;

private Button mBtnSure;

public final static int TAG_RESULTCODE = 0x102;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_add_tag);

initView();

initData();

}

private void initData() {

// 根據(jù)輸入框輸入值的改變提示最大允許輸入的個(gè)數(shù)

mEtLabel.addTextChangedListener(new TextWatcher_Enum());

}

private void initView() {

mEtLabel = (EditText) findViewById(R.id.et_label);

mBtnSure = (Button) findViewById(R.id.btn_sure);

mBtnSure.setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_sure:

String label = mEtLabel.getText().toString();

if (TextUtils.isEmpty(label)) {

Toast.makeText(AddTagActivity.this,"自定義標(biāo)簽不應(yīng)為空",Toast.LENGTH_LONG).show();

return;

}

Intent intent = getIntent();

intent.putExtra("tags", label);

setResult(TAG_RESULTCODE, intent);

finish();

break;

}

}

/**

* 根據(jù)輸入框輸入值的長度超過8個(gè)字符的時(shí)候,彈出輸入的標(biāo)簽應(yīng)控制在8個(gè)字

*

* @author lijuan

*

*/

class TextWatcher_Enum implements TextWatcher {

@Override

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

}

@Override

public void onTextChanged(CharSequence s, int start, int before,

int count) {

int lenght = mEtLabel.getText().toString().trim().length();

if (lenght > 8) {

Toast.makeText(AddTagActivity.this,"輸入的標(biāo)簽應(yīng)控制在8個(gè)字",Toast.LENGTH_LONG).show();

}

}

@Override

public void afterTextChanged(Editable s) {

}

}

}

6、activity_main.xml在上面已經(jīng)貼出來了,在這里就不重復(fù)了,我們創(chuàng)建了arrays.xml,在這里定義了一寫熱門的標(biāo)簽:

美妝

畫板

漫畫

高科技

韓國電影

股票

美術(shù)

高富帥

鴻泰安

運(yùn)動

外語

財(cái)經(jīng)

大叔

非主流

暴走漫畫

心理學(xué)

漢語

白富美

自定義

7、item_tag.xml

android:id="@+id/btn_tag"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/selector_btn_item"

android:gravity="center"

android:minHeight="30dp"

android:minWidth="45dp"

android:paddingLeft="16dp"

android:paddingRight="16dp"

android:textSize="12sp" />

8、activity_add_tag.xml

android:layout_width="250dp"

android:layout_height="wrap_content"

android:background="@android:color/white"

android:gravity="center_horizontal"

android:orientation="vertical"

android:padding="5dp" >

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginLeft="5dp"

android:text="請輸入想要添加的標(biāo)簽"

android:textColor="@android:color/black"

android:textSize="16dp" />

android:id="@+id/et_label"

android:layout_width="match_parent"

android:layout_height="80dp"

android:layout_margin="5dp"

android:background="@drawable/selector_btn_item"

android:gravity="center_vertical|start"

android:maxLength="8"

android:paddingLeft="10dp"

android:textColor="@android:color/black"

android:textSize="16dp" />

android:id="@+id/btn_sure"

android:layout_width="50dp"

android:layout_height="32dp"

android:layout_marginLeft="16dp"

android:layout_marginRight="16dp"

android:layout_marginTop="5dp"

android:background="#38353D"

android:gravity="center"

android:text="確定"

android:textColor="@android:color/white"

android:textSize="14dp" />

9、selector_btn_item.xml

最后一點(diǎn)了吧,我們在AndroidManifest.xml中需要添加

android:name=".AddTagActivity"

android:theme="@style/dialogstyle" />

用于我們自定義標(biāo)簽,彈出的一個(gè)類似于對話框的一個(gè)Activity,這里我們引用了自定義一個(gè)樣式

@android:color/transparent

@null

true

true

true

@null

@android:style/Animation.Dialog

true

對于這個(gè)類似于對話框的一個(gè)Activity,有不明白的可以上我之前的一篇文章: Android中使用Dialog風(fēng)格彈出框的Activity

好了,已經(jīng)全部寫完了,有什么疑問的,請?jiān)谙旅媪粞?#xff0c;有不足的還望指導(dǎo),感謝各位_

總結(jié)

以上是生活随笔為你收集整理的android 自定义flowlayout,Android 自定义ViewGroup之实现FlowLayout-标签流容器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

日韩在线首页 | www天天干| 精品久久美女 | 久久综合五月天婷婷伊人 | 美女黄色网在线播放 | 亚洲九九影院 | av黄免费看 | www.色午夜,com | 国产成人61精品免费看片 | 国产原创在线视频 | 国际精品久久久久 | 精品一二三区视频 | 在线播放91 | 成人国产精品av | bbb搡bbb爽爽爽 | 成人一级片免费看 | 正在播放五月婷婷狠狠干 | 久久久婷| 国产精品无av码在线观看 | 激情小说久久 | 成人影视免费看 | 精品日韩视频 | 三级av网 | 日韩三级一区 | 久久视频在线看 | 五月婷婷色 | 欧美亚洲专区 | 久久久久久精 | 成人亚洲综合 | 狠狠色狠狠色综合日日小说 | 免费国产在线观看 | 日韩亚洲在线观看 | 日韩精品免费在线 | 伊人日日干 | 午夜久操 | 国产午夜精品免费一区二区三区视频 | 成人影片在线播放 | 日韩精品中文字幕在线观看 | 欧美日韩久久不卡 | 国产成人61精品免费看片 | 亚洲欧美日韩一二三区 | 国产精品大片在线观看 | 午夜精品一二三区 | 热久久免费视频 | 国产色综合 | 91av短视频 | 成人av在线亚洲 | 国产精品久久嫩一区二区免费 | 亚洲黄色网络 | 国产一区视频在线观看免费 | 国内精品久久久久久久久 | 久久成人久久 | 天天射天天干天天 | 91热视频 | 人人插人人草 | 欧美日韩免费观看一区=区三区 | 最近中文字幕完整视频高清1 | 日本aaa在线观看 | 91精品国产91久久久久久三级 | 夜色.com| 91九色丨porny丨丰满6 | 一级免费看| 国产手机在线播放 | 波多野结衣亚洲一区二区 | 成人性生交大片免费观看网站 | 久久九九国产视频 | 欧美不卡在线 | 久艹视频免费观看 | 玖玖视频国产 | 成人av影院在线观看 | 成人电影毛片 | 欧美日韩高清一区二区三区 | 国产视频一区在线播放 | 久草视频在线免费播放 | 久久精品一区二 | 天天干天天操天天拍 | 国产不卡网站 | 日本中文字幕电影在线免费观看 | 国产精品亚洲片夜色在线 | 最新婷婷色 | 久久久国产精品一区二区中文 | 国产 在线 高清 精品 | 免费99精品国产自在在线 | 黄色一级免费网站 | 日韩色高清 | 亚洲欧美日韩精品久久久 | 日韩区欧美久久久无人区 | 欧美日韩精品在线观看视频 | 国产在线观看不卡 | 日韩二区在线播放 | 久久综合欧美 | 福利视频 | 免费观看第二部31集 | 丁香婷婷成人 | 免费看黄在线 | 黄色看片 | 久久久久久久久久久久久9999 | 久久久久在线视频 | 免费黄在线看 | 日韩伦理一区二区三区av在线 | 成人av片在线观看 | 又黄又爽免费视频 | 亚洲黄色区 | 9999精品免费视频 | 国产在线观看黄 | 亚洲精品综合一二三区在线观看 | 久久久国产精品免费 | 国产美腿白丝袜足在线av | 日韩精品第一区 | 成人动图| 天天爽天天爽夜夜爽 | 国产精品99久久久久久宅男 | 免费三级黄 | 久草在线免费电影 | 伊人午夜 | 免费特级黄毛片 | 中文字幕在线资源 | 在线视频手机国产 | 日韩免费电影网 | 久久久久久国产精品999 | 成年人视频免费在线播放 | 激情丁香综合五月 | 欧美激情综合五月色丁香 | 不卡电影一区二区三区 | 久久国产免费看 | 日韩中文三级 | av免费成人| 夜夜躁天天躁很躁波 | 国产精品永久 | 狠狠躁夜夜躁人人爽超碰91 | 亚洲精品午夜久久久 | 久久久免费精品国产一区二区 | 亚洲91精品在线观看 | 在线观看视频97 | 五月婷网 | 亚洲一级免费电影 | 国产成a人亚洲精v品在线观看 | 亚洲天天综合网 | 国产精品久久99 | 久久久久久久久久免费 | 国产又粗又猛又爽又黄的视频免费 | 久久精品黄 | 久久国内视频 | 91麻豆看国产在线紧急地址 | 欧美在线观看视频 | 综合激情网... | 久久人人射 | 日韩免费成人av | 天天五月天色 | 成人在线观看免费 | 午夜久操| 伊人天堂久久 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 精品一区二区免费在线观看 | 国产破处视频在线播放 | 色婷婷伊人 | 欧美另类高清 videos | 久久精品久久精品 | 国产精品手机视频 | 免费看十八岁美女 | 成人在线免费小视频 | 国产97免费 | 国产色a在线观看 | 国产一级二级视频 | 中文字幕在线久一本久 | 久久99电影 | 在线播放av网址 | 久久综合九色欧美综合狠狠 | 国产午夜精品视频 | 色多视频在线观看 | 国产精品毛片一区二区 | 成人性生交大片免费看中文网站 | 成人久久久电影 | 中文字幕黄色网址 | 婷婷伊人五月天 | 亚洲国产97在线精品一区 | 欧美日韩国产精品爽爽 | 久久香蕉一区 | 精品国偷自产国产一区 | 国产色在线,com | 国产资源网 | 亚洲综合干| 高清不卡毛片 | 91久久久久久久一区二区 | 九色精品在线 | 久久久久免费电影 | 天天插视频 | 亚洲第一区在线观看 | 99热这里精品 | 波多野结衣在线观看一区二区三区 | 最近2019好看的中文字幕免费 | 久久久久日本精品一区二区三区 | 五月开心激情网 | 免费中午字幕无吗 | 免费 在线 中文 日本 | 99精品国产福利在线观看免费 | 国产91精品一区二区麻豆亚洲 | 成人av在线影院 | 亚洲成人中文在线 | 国产成人av一区二区三区在线观看 | 久久综合狠狠 | 日本在线观看一区 | 狠狠网亚洲精品 | 色噜噜日韩精品欧美一区二区 | 91夫妻自拍 | 国产精品久久人 | 就要干b| 亚洲va欧美va人人爽春色影视 | 精品国产自 | 中文字幕丝袜美腿 | 精品国产一区二区三区不卡 | 色五丁香| 一级特黄av | 久久乐九色婷婷综合色狠狠182 | 日韩中文在线观看 | 韩日电影在线 | 日韩黄视频 | 国产精品久久久久四虎 | 午夜精品一区二区三区四区 | 欧美有色| 欧美日韩伦理在线 | 日韩区在线观看 | 国产99久久久国产精品免费看 | 免费男女羞羞的视频网站中文字幕 | a色网站 | 九九免费精品视频 | 亚洲午夜精 | 日本bbbb摸bbbb | 夜夜爽天天爽 | 99精品视频免费全部在线 | a亚洲视频 | 中文字幕在线观看视频免费 | 亚洲综合在线播放 | 精品999久久久 | 国产伦精品一区二区三区高清 | 亚洲精品女人 | 久久久久国产成人精品亚洲午夜 | 国产一区欧美一区 | 久久免费看a级毛毛片 | 免费观看全黄做爰大片国产 | 国内99视频 | 91在线精品播放 | av在线播放观看 | 中文字幕一区二区三区四区视频 | 天天干天天插 | 免费av大全 | 日韩高清一区在线 | 日韩欧美视频在线免费观看 | 中文字幕电影高清在线观看 | a电影免费看 | 亚洲va在线va天堂va偷拍 | 狠狠躁夜夜躁人人爽超碰91 | 超碰最新网址 | 一区二区观看 | 激情电影在线观看 | 久久ww| 69久久99精品久久久久婷婷 | 97人人模人人爽人人少妇 | 丁香婷婷在线观看 | 98久久| 久精品视频免费观看2 | 久久午夜影院 | 亚洲国产视频直播 | 最近免费中文字幕大全高清10 | 免费观看国产精品 | 天天操天天干天天摸 | 日本最新高清不卡中文字幕 | 丁香导航 | 一级做a视频 | 免费观看91视频大全 | 日韩精品亚洲专区在线观看 | 精品在线视频一区二区三区 | 婷婷在线免费 | 在线免费观看的av网站 | 日韩性网站 | 国产精品久久99综合免费观看尤物 | 久久视频在线看 | 欧美日韩国产精品一区二区亚洲 | 免费碰碰 | 97视频入口免费观看 | 国产69精品久久久久99尤 | 久久精品网站免费观看 | 中文字幕一区二区三区视频 | 国产69久久久欧美一级 | 99久久99久久精品 | 久久成人国产精品免费软件 | 五月婷婷综合在线观看 | 一区二区三区福利 | 亚洲激色| 在线黄色国产电影 | 免费黄色av电影 | 狠狠天天 | 丁香av在线 | 成人在线视频在线观看 | 国产亚洲精品日韩在线tv黄 | 最新久久久 | 久久国产精品一二三区 | 日韩大片在线免费观看 | 日韩欧美综合在线视频 | 91污在线 | 亚洲精品短视频 | 伊人中文网 | 中文字幕在线观看资源 | 三级av网| 久草精品视频在线观看 | 91黄色免费网站 | 一区二区视频在线看 | 精品99在线视频 | 91精品国自产在线观看 | 国产中文 | 丁香网五月天 | 成人午夜电影在线播放 | 天天操夜夜摸 | 97色se| 人人爽人人av | 欧美少妇18p | 激情综合亚洲 | 久久精品99国产精品 | 一区二区精品国产 | 免费视频在线观看网站 | 91精品啪在线观看国产线免费 | 三级毛片视频 | a电影在线观看 | 亚洲区另类春色综合小说校园片 | 欧美性精品 | 最新动作电影 | 一区二区视 | 99国产情侣在线播放 | 蜜桃视频成人在线观看 | 在线视频专区 | 国内精品免费久久影院 | 国产精品自在线拍国产 | 国产又粗又硬又长又爽的视频 | 国产伦理久久 | 久草视频中文 | 久久成人国产 | 黄色午夜网站 | 国产综合久久 | 日韩av在线一区二区 | 日韩视频一区二区在线 | 免费又黄又爽 | 特级大胆西西4444www | 99热精品视 | 久久综合九色欧美综合狠狠 | 日韩一二区在线 | 日日草av | 中文字幕有码在线观看 | 97免费视频在线播放 | 国产美女精品人人做人人爽 | 丁香六月婷婷激情 | 亚洲激精日韩激精欧美精品 | 六月丁香在线视频 | 精品国产成人在线 | 国产精品99爱 | 国产一区二区免费 | 97视频播放 | 免费视频久久 | 六月丁香综合网 | 亚洲国产精品va在线看黑人 | 91一区啪爱嗯打偷拍欧美 | 黄色的视频网站 | www.亚洲黄 | 久久区二区 | 欧美精品做受xxx性少妇 | 国产亚洲视频系列 | 精品在线视频观看 | 丁香激情五月 | 国产精品99久久免费观看 | 国产免费高清视频 | 精选久久 | av在线播放不卡 | 免费av网址在线观看 | 国产精品18久久久久久不卡孕妇 | 亚洲网站在线看 | 国产理伦在线 | 8x成人免费视频 | 激情电影在线观看 | 国产精品毛片久久久 | 亚洲精品国产免费 | 国产精品久久久999 国产91九色视频 | 91传媒在线观看 | 久久99国产综合精品免费 | 国产丝袜制服在线 | 怡红院成人在线 | 日韩在线中文字幕视频 | 99在线看| 久久九九久久九九 | 91网在线观看| 99视频+国产日韩欧美 | 久久99精品久久久久久秒播蜜臀 | 六月天色婷婷 | 久久成人人人人精品欧 | 亚洲国产中文字幕 | 天天舔天天搞 | 视频 天天草 | 久久精品视频4 | 中文字幕之中文字幕 | 欧美在线观看禁18 | 97香蕉视频 | 久久精品国产免费看久久精品 | 色综合网 | 色综合人人 | 欧美精品亚州精品 | 国产一区二区网址 | 亚洲成人网在线 | 欧美三人交 | 中文字幕成人一区 | 91在线欧美| 久久免费av电影 | 激情综合网五月激情 | 精品一区电影国产 | 久久国产高清 | 色资源在线观看 | 久久综合免费视频 | 免费看久久久 | 91精品国产乱码在线观看 | 国产精品欧美 | 伊人永久在线 | 美女黄网久久 | 亚洲va在线va天堂 | 国产精品久免费的黄网站 | 国产99久久九九精品免费 | 99999精品视频 | 免费久久久久久久 | 亚洲综合视频在线 | 中文字幕日本在线观看 | 午夜 在线 | 中文字幕在线观看三区 | 午夜久久福利影院 | 夜夜躁狠狠燥 | 成人av在线资源 | 国产精品色婷婷 | 天天爽人人爽夜夜爽 | 国产黄色精品 | 97人人模人人爽人人喊中文字 | 91av电影在线 | 18网站在线观看 | 日本免费久久高清视频 | 久久av电影 | 97电影院在线观看 | 日韩婷婷 | 日本久久久久久久久 | 日韩成人高清在线 | 午夜10000 | 国产精品高 | 亚洲理论影院 | 久久国产精品二国产精品中国洋人 | 91.麻豆视频 | 99精品在线视频播放 | 91精品一区二区三区久久久久久 | 中文字幕免费观看视频 | 一区二区三区中文字幕在线观看 | 波多野结衣久久资源 | 亚洲国产免费看 | 午夜免费电影院 | 久久久激情网 | 少妇18xxxx性xxxx片 | 99国产精品免费网站 | 欧美综合久久久 | 九九视频在线 | 国产日产av | 日韩激情精品 | 精品久久久久久综合 | 黄色av一区二区 | 天天色天天射综合网 | 欧美日韩一区二区久久 | 激情综合网在线观看 | 久久精品永久免费 | 免费精品人在线二线三线 | 美女视频黄的免费的 | 精品国产乱码久久久久久1区二区 | 日韩乱色精品一区二区 | 白丝av在线 | 日韩av一区二区三区在线观看 | 人人爱人人射 | 日韩动漫免费观看高清完整版在线观看 | 在线观看视频三级 | 久久99久国产精品黄毛片入口 | 免费三级黄色片 | 天天爽天天爽 | 国产精品第一页在线观看 | 成人 国产 在线 | 狠狠色丁香婷婷综合久久片 | 国产 日韩 在线 亚洲 字幕 中文 | 久久毛片高清国产 | 91看片淫黄大片一级在线观看 | 日韩二区三区在线观看 | 五月婷婷视频在线 | 国产裸体永久免费视频网站 | 99久久er热在这里只有精品66 | 亚洲精品视 | 亚洲免费在线视频 | 四虎影视精品永久在线观看 | 久色婷婷 | 色婷婷午夜 | 欧美日韩高清在线 | 免费观看日韩av | a黄色片在线观看 | 开心激情五月网 | 日韩三级中文字幕 | 国产色综合天天综合网 | 欧美亚洲另类在线视频 | 在线观看完整版 | 久久婷婷色| 国产黄色成人av | 欧美a级在线播放 | 午夜美女福利直播 | 国产精品日韩在线 | 一区二区三区精品在线视频 | 亚洲 综合 国产 精品 | 美女黄频 | 国产精品久久久久久久久搜平片 | 特级毛片在线免费观看 | 国产亚洲片 | 国产精品乱码久久久 | 国产精品久久久久久久久久久久午 | 在线免费视频 你懂得 | 91 在线视频播放 | free,性欧美 九九交易行官网 | 亚洲精品小视频 | 久久夜色精品国产欧美一区麻豆 | 日韩欧美在线视频一区二区三区 | 亚洲精品国产精品国自产观看浪潮 | 日本黄色黄网站 | 国产精品久久久久免费观看 | 国产四虎影院 | 99精品在这里 | 亚洲毛片一区二区三区 | 99激情网 | 免费看黄在线观看 | 97超碰网| 99国内精品 | 国产精品视频地址 | 国产一区二区三区 在线 | 亚洲精品成人av在线 | 2019av在线视频 | 日本中文字幕在线观看 | 国产尤物一区二区三区 | 波多野结衣综合网 | 91人人澡 | 免费观看91| 欧美黄色高清 | 国产精品久久久久久久久搜平片 | 午夜精品久久久久久久99水蜜桃 | 超级碰碰碰免费视频 | 91av片| 国产一区二区三区视频在线 | 国产在线播放一区 | v片在线播放 | 99精品免费网 | 91插插插免费视频 | 欧美视频在线二区 | 一区二区三区精品在线视频 | 国产精品久久精品 | 国产在线中文 | 欧美超碰在线 | 久久久久在线观看 | 国产精品永久 | 欧美精品久久99 | 五月天久久久 | 一区二区三区播放 | 中文字幕在线一二 | 中文在线免费观看 | 亚洲精品久久久久久国 | 五月天视频网站 | 国产五月婷婷 | 久草97| 97日日 | 99久久久国产精品免费观看 | www.五月天激情 | 国产精品v欧美精品v日韩 | 九九视频网 | 91精品日韩 | 又爽又黄又无遮挡网站动态图 | 色婷婷国产在线 | 精品国产人成亚洲区 | 欧美精彩视频在线观看 | 亚洲精品综合久久 | 日韩在线免费视频观看 | 久久99精品一区二区三区三区 | 国产三级香港三韩国三级 | 狠狠躁夜夜躁人人爽视频 | 国产视频在线观看一区二区 | 99视频在线精品 | 日韩电影中文,亚洲精品乱码 | 国产91大片 | 日产av在线播放 | 国产精品麻豆三级一区视频 | 99精品久久只有精品 | 亚洲涩综合 | 色多视频在线观看 | 五月婷婷黄色网 | 超级碰碰碰碰 | 国产午夜一级毛片 | 日韩精品一区二区免费 | 国产精品一区二区在线观看免费 | 久久综合久久综合这里只有精品 | 欧美va天堂va视频va在线 | 亚洲国产精品成人女人久久 | 色香蕉视频 | 奇米7777狠狠狠琪琪视频 | 超碰电影在线观看 | 日韩电影在线一区 | 免费三级影片 | 中文字幕久久精品亚洲乱码 | 天天天干天天天操 | 一级黄色在线视频 | 中文字幕在线观看免费观看 | 精品国产免费人成在线观看 | 国产a视频免费观看 | 视频成人免费 | 国产午夜激情视频 | av千婊在线免费观看 | 91在线观看欧美日韩 | 国内精品毛片 | 成人精品久久久 | 五月天天色 | 欧美极度另类性三渗透 | 国产一区二区视频在线 | 中文电影网 | 91九色网站 | 在线观看电影av | 日精品| 国产精品五月天 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 好看的国产精品视频 | 九九免费观看视频 | 日韩三级不卡 | 91精品网站在线观看 | 午夜在线看片 | 青青河边草观看完整版高清 | 中文在线中文资源 | 婷婷久久网站 | 色网站黄 | 久久亚洲欧美 | 国产97碰免费视频 | 特级大胆西西4444www | 天天五月天色 | 夜夜躁日日躁狠狠久久88av | 国产综合精品久久 | 国产精品一区专区欧美日韩 | 日韩另类在线 | 亚洲精品在线视频播放 | 99婷婷狠狠成为人免费视频 | 日韩在线观看三区 | 日韩在线网址 | 日韩精品视频一二三 | 丁香在线 | 97国产情侣爱久久免费观看 | 99精品系列 | 日韩欧美在线观看一区二区 | 久久av不卡 | 成人久久18免费网站 | 西西44人体做爰大胆视频 | 日韩av一区二区在线影视 | 亚洲1区在线 | 日日干日日操 | 天天操天天爱天天干 | 日韩伦理一区二区三区av在线 | 黄色精品一区二区 | 免费开视频 | 久久色视频 | 国产在线观看免 | 青青草视频精品 | 亚洲丝袜一区二区 | 欧美一级片免费观看 | 六月婷色 | 国产午夜在线观看 | 国产国产人免费人成免费视频 | 免费观看性生活大片3 | 国产精品3 | 看av免费网站 | 伊人影院av | 国内精品二区 | 视频国产一区二区三区 | 久久久久免费精品视频 | 超碰官网 | 久久久精品一区二区 | 久久九九久久精品 | 在线观看亚洲成人 | 久久不射网站 | 天天碰天天操 | 成人在线网站观看 | 高清av免费一区中文字幕 | 国产成在线观看免费视频 | 久久久精品国产一区二区电影四季 | 国产综合精品久久 | www天天操| 久久视频国产精品免费视频在线 | 丰满少妇高潮在线观看 | 精品一区二区在线免费观看 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 亚洲视频免费在线观看 | 99在线热播精品免费 | 色资源在线观看 | 国产精品久久久久久爽爽爽 | 国产精品一区二区美女视频免费看 | 午夜精品久久久久久久99 | 久久国产香蕉视频 | 日韩欧美第二页 | 999久久久久久| 国产成人资源 | 久久99精品一区二区三区三区 | 麻花豆传媒mv在线观看 | 亚洲做受高潮欧美裸体 | 中文资源在线官网 | 色五月成人 | 特级黄色一级 | 日本特黄一级片 | 国产精品久久久久久久久久久久久久 | 久久综合欧美精品亚洲一区 | 中文字幕精品一区二区精品 | av动态图片 | 99激情网 | 福利视频网址 | 一区二区三区精品在线视频 | 特级西西444www大精品视频免费看 | 亚洲午夜大片 | 天天操天天弄 | www.777奇米| 亚洲精品乱码久久久久久蜜桃不爽 | 日韩理论电影在线观看 | 色妞久久福利网 | 九九热免费观看 | 91成人免费看 | 男女拍拍免费视频 | 91精品国产91p65 | 精品久久久成人 | 中文字幕一二 | 国产a精品 | 网站免费黄 | 一级黄色片毛片 | 国产视频欧美视频 | 黄色一级大片在线免费看产 | 蜜臀av性久久久久蜜臀av | 成人亚洲综合 | 九九视频精品免费 | 亚洲精品在线一区二区 | 欧美大片aaa | 亚洲国产精品va在线看黑人动漫 | 久操操| 国产精品久久久久久久久久不蜜月 | 国产精品毛片一区二区在线 | 免费国产亚洲视频 | japanese黑人亚洲人4k | 亚洲精品一区二区三区在线观看 | 一区二区三区在线播放 | 涩涩成人在线 | 伊人天堂网 | 欧美色图视频一区 | 欧美大码xxxx| 欧美a在线免费观看 | 免费av网址大全 | 狠狠操狠狠 | 激情五月婷婷激情 | 久久夜色精品国产欧美一区麻豆 | 黄色一级免费网站 | 欧美日韩在线精品一区二区 | 日韩视频1区 | 操操操com| 亚洲无吗天堂 | 91久久国产综合精品女同国语 | 亚洲 欧美 综合 在线 精品 | 久草爱 | 99久精品视频 | 日本在线观看中文字幕 | 国产视频 亚洲视频 | 天天综合网在线 | av成人免费在线 | 草莓视频在线观看免费观看 | 美女网站视频免费黄 | 久久久久久欧美二区电影网 | 天天色天天草天天射 | 韩国一区在线 | 精品在线一区二区三区 | 婷婷色网址 | 91九色精品| 久久成人福利 | 精品日韩在线一区 | 国产亚洲精品美女久久 | 久久情爱 | 天天干天天干天天射 | 日韩大片在线免费观看 | 日韩一级黄色片 | 97精品超碰一区二区三区 | 欧美 日韩 久久 | 狠狠干天天操 | 精品女同一区二区三区在线观看 | 操操操天天操 | 亚洲高清在线视频 | 国内精品国产三级国产aⅴ久 | 国产精品mv| 国产乱对白刺激视频不卡 | 久久免费看片 | 色天堂在线视频 | 久久久免费播放 | 国产成人三级在线观看 | 在线亚洲成人 | 天天操天天操天天 | 97在线视频免费播放 | 欧美一级艳片视频免费观看 | 高清国产一区 | 久久午夜免费观看 | www.久久久久 | 91在线一区| 国产日韩欧美在线观看 | 99久久夜色精品国产亚洲96 | 亚洲视频在线免费观看 | 欧美日韩高清一区二区 国产亚洲免费看 | 久久精品国产亚洲精品 | 中文字幕av免费 | 国产成人久久av | 伊人久久av | 久草资源免费 | 久久精品国产精品亚洲精品 | 亚洲综合视频在线观看 | 国产在线超碰 | 青青河边草观看完整版高清 | 免费下载高清毛片 | 亚洲五月六月 | 欧美成人xxx| 国产精品久久久久久69 | 在线观看91久久久久久 | 免费高清国产 | 在线一区观看 | 午夜在线资源 | 色wwww| 最新国产在线视频 | 午夜精品99久久免费 | 欧美 日韩 国产 成人 在线 | 午夜精品一区二区三区在线视频 | 成人三级av | 一级做a爱片性色毛片www | 深爱激情五月综合 | 国内精品久久久久影院优 | 狠狠干中文字幕 | 久久久久久国产精品亚洲78 | 人人添人人澡人人澡人人人爽 | 精品一二三区视频 | 美女黄频在线观看 | 中文字幕国内精品 | 黄在线免费看 | 久久开心激情 | 国产精品美女免费 | 欧美一级视频免费看 | 国产在线观看你懂的 | 免费高清无人区完整版 | 天天色天| 亚洲精品一区二区三区四区高清 | 中文字幕资源网 | jizz18欧美18| 天天插综合网 | 亚洲国产精品99久久久久久久久 | 中文字幕有码在线播放 | av三级在线免费观看 | 国产精品久久久久久久久久久免费看 | 国产精品99久久久久久久久久久久 | 日韩欧美在线免费 | 成年人在线观看视频免费 | 看毛片网站| 日韩电影一区二区三区在线观看 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 性色视频在线 | 91传媒免费观看 | 成年人黄色免费视频 | 中文字幕二区 | 国产日产av| 一区中文字幕 | 在线观看91 | 亚洲精品自拍视频在线观看 | 久久久黄色免费网站 | www日日夜夜| 人人躁| 美女视频a美女大全免费下载蜜臀 | 久久99国产精品自在自在app | 日韩二区三区在线 | 91中文字幕在线观看 | 国产在线一区二区三区播放 | 国产视频导航 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 精品一区二区精品 | 日韩av电影免费观看 | 国产 在线 高清 精品 | 久久久精品一区二区 | 欧美日韩一级视频 | 玖玖在线精品 | 久久久69 | 91精品在线免费 | 精品视频免费久久久看 | 国产麻豆电影在线观看 | 麻豆 free xxxx movies hd| 色婷婷www | 一级性视频 | a天堂在线看 | 91人网站| 亚洲精品在线观看中文字幕 | 日日草夜夜操 | 国产精品福利av | 免费日韩 精品中文字幕视频在线 | 欧美福利视频一区 | 一区二区三区视频网站 | 成人中心免费视频 | 最新色站 | 亚洲综合视频在线 | 亚洲国产小视频在线观看 | 超碰国产在线观看 | 玖玖视频免费在线 | 黄网站a| 在线看91| 色偷偷88888欧美精品久久久 | 青青五月天 | 久久久 精品 | 亚洲乱亚洲乱妇 | 亚洲视频 视频在线 | 中文在线字幕免费观看 | 国产手机在线精品 | 久久久久国产精品一区二区 | 国产精品国产三级国产不产一地 | 久久99精品波多结衣一区 | 2019天天干夜夜操 | 激情电影影院 | 国产精品免费一区二区三区在线观看 | 久久久久久久久久福利 | 国产高清av | 国产精品入口麻豆 | 精品视频免费在线 | 天堂在线v| 午夜精品久久久久久久99热影院 | 国产系列在线观看 | 91精品入口| 国偷自产视频一区二区久 | 国产97色在线 | 日韩久久久久久久久久 | 色视频网站免费观看 | 国产中文字幕视频在线观看 | 色视频网址 | 麻豆av一区二区三区在线观看 | 精品国产自| 免费在线观看国产精品 | 日日草夜夜操 | 免费在线播放av电影 | 久久人人爽人人人人片 | 在线免费观看视频你懂的 | 亚洲国产精品传媒在线观看 | 天天射天天拍 | 久久成人精品视频 | 亚洲精品国产综合99久久夜夜嗨 | 免费观看日韩 | 国产精品免费看久久久8精臀av | 天天操天天草 | 日本中文字幕在线电影 | 欧美一区免费观看 | 国产成人精品久久久 | 人人网av | 日韩高清毛片 | 亚洲综合色网站 | 干干日日 | 999久久久久久久久 69av视频在线观看 | 免费国产ww| 日韩国产在线观看 | 精品国产综合区久久久久久 | 日韩精品免费在线视频 | 日本精品小视频 | 国产精品毛片完整版 | 久久久亚洲麻豆日韩精品一区三区 | 国产黄色精品在线观看 | 色爱成人网 | 亚洲日本欧美 | 久久影院中文字幕 | 欧美日韩激情视频8区 | 色婷婷激情五月 | 三级a毛片 | 精品一区二区在线看 | 亚洲网久久 | 丁香花在线观看免费完整版视频 | 欧美亚洲一区二区在线 | 天堂av在线中文在线 | 在线观看黄a | 日韩中文字幕免费看 | 91成人黄色 | 国产一区在线看 | 五月天婷亚洲天综合网精品偷 | 国产精品久久久久久久久久久免费 | 国产精品第二页 | 亚洲精品国产高清 | 一区二区三区久久 | 亚洲理论电影网 | 欧美国产一区在线 | 91成人短视频在线观看 | 91在线视频免费91 | 97超碰伊人 | 国产精品久久久一区二区 | 日韩在线观看免费 | 久久综合九色欧美综合狠狠 | 欧美va天堂在线电影 | 国模精品一区二区三区 | 91女神的呻吟细腰翘臀美女 | 免费网站观看www在线观看 |