MainActivity 主要是实例化集合 已经给搜索历史赋值
package mlb.bawei.com.d05_test01;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import mlb.bawei.com.d05_test01.View.InsertView;
import mlb.bawei.com.d05_test01.View.ShowView;
public class MainActivity extends AppCompatActivity {
private List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText e_insert = findViewById(R.id.edit_insert);
Button button = findViewById(R.id.btn_insert);
list = new ArrayList<>();
initData();
ShowView showView = findViewById(R.id.showview);
final InsertView insertView =findViewById(R.id.insert_view);
showView.setList(list);
}
private void initData() {
list.add("泡椒");
list.add("大可乐");
list.add("瓜子");
list.add("其实我是你爹");
list.add("鸡爪");
list.add("乖儿子");
list.add("海螺");
list.add("狗屁赌鬼");
list.add("狗屁鬼");
list.add("狗屁赌鬼");
list.add("狗屁鬼");
list.add("狗屁鬼");
for (int i = 0; i < 10; i++) {
list.add("狗屁赌鬼");
list.add("辣鸡");
list.add("Lowb");
list.add("FW+-*");
list.add("废物+*");
}
}
}
Main.xml 的布局
因为 只是 热门搜索 都是死值 所以只可以看 热门搜索的 布局 其他的不用看
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:id="@+id/line01"
android:orientation="horizontal">
<EditText
android:layout_gravity="center"
android:layout_width="290dp"
android:layout_height="wrap_content"
android:background="@drawable/btn_shape"
android:id="@+id/edit_insert"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="搜索"
android:textSize="21dp"
android:layout_gravity="center"
android:background="@drawable/btn_shape"
android:layout_marginLeft="10dp"
app:layout_constraintLeft_toRightOf="@id/edit_insert"
android:id="@+id/btn_insert"/>
</LinearLayout>
<LinearLayout
app:layout_constraintTop_toBottomOf="@id/line01"
android:layout_width="match_parent"
android:id="@+id/line02"
android:orientation="vertical"
android:layout_height="200dp">
<TextView
app:layout_constraintTop_toBottomOf="@id/line01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="搜索历史"/>
<mlb.bawei.com.d05_test01.View.InsertView
android:id="@+id/insert_view"
android:layout_width="match_parent"
android:layout_height="178dp" />
</LinearLayout>
<LinearLayout
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="260dp"
app:layout_constraintTop_toBottomOf="@id/line02"
android:orientation="vertical">
<TextView
app:layout_constraintTop_toBottomOf="@id/line01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="热门搜索"/>
<mlb.bawei.com.d05_test01.View.ShowView
app:layout_constraintTop_toBottomOf="@id/line02"
android:id="@+id/showview"
android:layout_width="match_parent"
android:layout_height="170dp" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
自定义View 实现的流式布局
继承LinearLayout 重写两个有参构造
给一个赋值的方法 当给赋值的时候就会 调用添加的一个方法–showData();
package mlb.bawei.com.d05_test01.View;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import mlb.bawei.com.d05_test01.R;
/**
* @author
* @date 2018/11/30
*/
public class ShowView extends LinearLayout {
List<String> list;
Context contexts;
public ShowView(Context context) {
super(context);
list = new ArrayList<>();
contexts=context;
setOrientation(VERTICAL);
}
public ShowView(Context context, AttributeSet attrs) {
super(context, attrs);
contexts=context;
setOrientation(VERTICAL);
}
public void setList(List<String> lists) {
list = lists;
showData();
}
int mMaxSize=22;
int a =1;
public void showData() {
//先清空 因为都是重新画
removeAllViews();
//再初始 布局
LinearLayout linearLayout_h = (LinearLayout) View.inflate(contexts, R.layout.waterpall_h,null);
//给试图添加进去
addView(linearLayout_h);
//
int len=0;
//循环
for (int i=0;i<list.size();i++){
//判断长度 如果大于了 就 再次添加一下
if(a>5){
linearLayout_h = (LinearLayout) View.inflate(contexts, R.layout.waterpall_h,null);
//给试图添加进去
addView(linearLayout_h);
//换行
a=0;
}
View view = View.inflate(contexts,R.layout.waterpall,null);
//给试图的空间赋值
TextView textView = view.findViewById(R.id.pall_name);
textView.setText(list.get(i));
//把这个view 给 lienear
linearLayout_h.addView(view);
a++;
final int index=i;
LinearLayout.LayoutParams layoutParams = (LayoutParams) view.getLayoutParams();
//layoutParams.weight=1;
view.setLayoutParams(layoutParams);
//监听事件
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(contexts,"你点了 "+list.get(index),Toast.LENGTH_SHORT).show();
}
});
view.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
list.remove(index);
a=1;
showData();
return false;
}
});
}
}
}