实现流程
首先需要三个LinearLayout布局
第一个垂直布局
第二个水平布局
第三个放一个文本
布局
**
第一个垂直布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/layout_v"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
## 第二个水平布局 <?xml version="1.0" encoding="utf-8"?>
第三个放一个文本
<TextView
android:id="@+id/txt"
android:textSize="40dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/myshape"
android:text="标题" />
## 自定义View中
**
import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.umeng.soexample.R;
import java.util.List;
public class LiuView extends RelativeLayout {
private LinearLayout view;
private Context mcontext;
private LinearLayout layoutv;
private LinearLayout layouth;
public LiuView(Context context) {
super(context);
initView(context);
}
public LiuView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public LiuView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
}
private void initView(Context context) {
//初始化上下文
this.mcontext = context;
//获取垂直布局
view = (LinearLayout) View.inflate(context, R.layout.layout_item_v, null);
layoutv = (LinearLayout) view.findViewById(R.id.liu_v);
//添加到this.addView
this.addView(view);
}
public void getData(List<String> data) {
/*
* 写一个方法,调用setList(String集合)
* */
setList(data);
}
private void setList(List<String> list) {
//初始化横向布局,初始化横向布局之前remove垂直布局,找控件,添加到横向布局,之后remove横向布局
layoutv.removeAllViews();
layouth = (LinearLayout) View.inflate(mcontext, R.layout.layout_item_h, null);
layoutv.addView(layouth);
layouth.removeAllViews();
String s = "";
int len = 0;
for (int i = 0; i < list.size(); i++) {
s = list.get(i);
len += i;
if (i == 20) {
layouth = (LinearLayout) View.inflate(mcontext, R.layout.layout_item_h, null);
layoutv.addView(layouth);
len = 0;
}
//找文本控件 赋值
LinearLayout layouttxt = (LinearLayout) View.inflate(mcontext, R.layout.layout_item_txt, null);
TextView txt=(TextView) layouttxt.findViewById(R.id.liu_txt);
txt.setText(s);
layouth.addView(layouttxt);
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) txt.getLayoutParams();
layoutParams.weight=1;
layoutParams.rightMargin=10;
layoutParams.leftMargin=10;
txt.setLayoutParams(layoutParams);
}
}
**
JAVA代码
**
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private List list = new ArrayList<>();
private EditText edtxt;
private LiuView liuView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edtxt = findViewById(R.id.ed_txt);
liuView = findViewById(R.id.liuview);
findViewById(R.id.bt_sele).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String trim = edtxt.getText().toString().trim();
list.add(trim);
Log.d("TAG",list.toString());
liuView.setData(list);
}
});
}
}