//main.xml
<LinearLayout 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="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <com.example.weeklx01.TitleBar android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.example.weeklx01.Kojian android:id="@+id/lishi" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="搜索历史" /> <com.example.weeklx01.MyView android:id="@+id/myview" android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.example.weeklx01.Kojian android:id="@+id/remen" android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="热门搜索" /> <com.example.weeklx01.MyView android:id="@+id/myview1" android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
//titie.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="horizontal" android:layout_height="wrap_content"><ImageView android:id="@+id/image" android:background="@drawable/search" android:layout_width="50dp" android:layout_height="50dp" /> <EditText android:id="@+id/edit" android:layout_width="330dp" android:layout_height="wrap_content" /></LinearLayout>
//Title接口
private ImageView imageView; private EditText editText;
Context context; public TitleBar(Context context) { super(context); this.context=context;
init();
}public TitleBar(Context context,AttributeSet attrs) { super(context, attrs); this.context=context;
init();
}private void init() {
View view=View.inflate(context,R.layout.activity_titlebar,null);
imageView=view.findViewById(R.id.image);
editText=view.findViewById(R.id.edit);
imageView.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) { if (msetButton!=null){
msetButton.setsuccess(editText.getText().toString());
}
}
});
addView(view);
}
SetButton msetButton;public void setBut(SetButton setButton){
msetButton=setButton;
}public interface SetButton{ void setsuccess(String str);
}
}//MAIN
private MyView myView,myview1; private TitleBar titleBar; private Dao dao; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inif();
}private void inif() { //获取资源id
myView=findViewById(R.id.myview);
titleBar=findViewById(R.id.title);
myview1=findViewById(R.id.myview1); //实例化dao
dao=new Dao(MainActivity.this); //调用dao查询
final List<Bean> select = dao.select(); for (int i = 0; i < select.size(); i++) {
TextView text=new TextView(MainActivity.this); //进来查询
final int index = i;
String name = select.get(i).getName();
text.setTextColor(Color.YELLOW);
text.setBackgroundResource(R.drawable.deit);
text.setText(name);
myView.addView(text); //点击删除
text.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
dao.delete(select.get(index).getUuid());
myView.removeView(v);
}
});
} //调用接口方法
titleBar.setBut(new TitleBar.SetButton() { @Override
public void setsuccess(String str) { //用uuid删除
final UUID uuid = UUID.randomUUID();
TextView tv=new TextView(MainActivity.this);
tv.setTextColor(Color.GREEN);
tv.setText(str);
tv.setBackgroundResource(R.drawable.deit);
tv.setTag(uuid);
myView.addView(tv); //数据库添加
dao.add(str,uuid.toString()); //点击删除
tv.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
String uuid = String.valueOf(v.getTag());
dao.delete(uuid);
myView.removeView(v);
}
});
}
}); //热门搜索
for (int i = 0; i < 20; i++) {
TextView textView=new TextView(MainActivity.this);
textView.setText("数量"+i);
textView.setTextColor(Color.RED);
textView.setBackgroundResource(R.drawable.deit);
myview1.addView(textView);
}
}
}//控件
public class Kojian extends TextView {public Kojian(Context context) { super(context);
}public Kojian(Context context,AttributeSet attrs) { super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.Kojian); int color = typedArray.getColor(R.styleable.Kojian_TextColor, Color.RED);
setTextColor(color); //回收
typedArray.recycle();
}
}//attr.xml
<declare-styleable name="Kojian"> <attr name="TextColor" format="color"></attr> <attr name="TextName" format="string"></attr> </declare-styleable></resources>
//
//最高的孩子
private int mMax=20; //间隔
private int mJj=20;
public MyView(Context context, AttributeSet attrs) { super(context, attrs);
}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int w = MeasureSpec.getSize(widthMeasureSpec); int h = MeasureSpec.getSize(heightMeasureSpec);
measureChildren(widthMeasureSpec,heightMeasureSpec);
findH(); int left=0, top=0; int childCount = getChildCount(); for (int i = 0; i < childCount; i++) {
View view = getChildAt(i); if (left!=0){ if ((left+view.getMeasuredWidth())>w){
top+=mMax+mJj;
left=0;
}
}
left+=view.getMeasuredWidth()+mJj;
}
setMeasuredDimension(w,(top+mMax)>h?h:top+mMax);
}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b);
findH(); int left=0, top=0; int childCount = getChildCount(); for (int i = 0; i < childCount; i++) {
View view = getChildAt(i); if (left!=0){ if ((left+view.getMeasuredWidth())>getWidth()){
top+=mMax+mJj;
left=0;
}
}
view.layout(left,top,left+view.getMeasuredWidth(),top+mMax);
left+=view.getMeasuredWidth()+mJj;
}
}@Overrideprotected void onDraw(Canvas canvas) { super.onDraw(canvas);
}private void findH() {
mMax=0; int childCount = getChildCount(); for (int i = 0; i < childCount; i++) {
View view = getChildAt(i); if (view.getMeasuredHeight()>mMax){
mMax=view.getMeasuredHeight();
}
}
}
}//数据库
MySqilte mySqilte;
SQLiteDatabase database; public Dao(Context context){
mySqilte=new MySqilte(context);
database=mySqilte.getReadableDatabase();
} public void add(String name,String uuid){
ContentValues values=new ContentValues();
values.put("name",name);
values.put("uuid",uuid);
database.insert("user",null,values);
} public List<Bean> select(){
List<Bean> list=new ArrayList<>();
Cursor query = database.query("user", null, null, null, null, null, null); while (query.moveToNext()){
String name = query.getString(query.getColumnIndex("name"));
String uuid = query.getString(query.getColumnIndex("uuid"));
Bean bean=new Bean(name,uuid);
list.add(bean);
} return list;
} public void delete(String uuid){
database.delete("user","uuid=?",new String[]{uuid});
}
}
作者:Android技术干货分享
链接:https://www.jianshu.com/p/3bb75409a545