public class FlowLayout extends ViewGroup { public FlowLayout(Context context) { this(context,null); } public FlowLayout(Context context, AttributeSet attrs) { this(context, attrs,0); } public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { measureChildren(0,0); int totalWidth = 0; int totalHeight = 0; for (int i = 0; i < getChildCount(); i++) { View view = getChildAt(i); if (totalWidth + view.getMeasuredWidth() >= getMeasuredWidth()) { totalWidth = 0; totalHeight += view.getMeasuredHeight(); } view.layout( totalWidth, totalHeight, totalWidth + view.getMeasuredWidth(), totalHeight + view.getMeasuredHeight()); totalWidth += view.getMeasuredHeight(); } }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private EditText et_text; private Button btn_add; private Button btn_decrease; private FlowLayout flow; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { et_text = (EditText) findViewById(R.id.et_text); btn_add = (Button) findViewById(R.id.btn_add); btn_decrease = (Button) findViewById(R.id.btn_decrease); flow = (FlowLayout) findViewById(R.id.flow); btn_add.setOnClickListener(this); btn_decrease.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_add: addHistory(); break; case R.id.btn_decrease: flow.removeAllViews(); break; } } private void addHistory() { TextView txt = new TextView(this); String s = et_text.getText().toString(); if (!TextUtils.isEmpty(s)) { txt.setText("" + s);// Toast.makeText(this,""+txt.getText(),Toast.LENGTH_LONG).show(); txt.setPadding(15, 15, 15, 15); flow.addView(txt); } } private void submit() { // validate String text = et_text.getText().toString().trim(); if (TextUtils.isEmpty(text)) { Toast.makeText(this, "text不能为空", Toast.LENGTH_SHORT).show(); return; } }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56