首先这是我写的一个自定义View
public class LiuShi extends ViewGroup {
private int mLeftMargin = 20;
private int mTopMargin = 20;
public LiuShi(Context context) {
this(context,null);
}
public LiuShi(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public LiuShi(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
measureChildren(widthMeasureSpec,heightMeasureSpec);
int leftMargin = mLeftMargin;
int topMargin = mTopMargin;
int ViewWidth = 0;
int ViewHeight = 0;
int sizeWidth = MeasureSpec.getSize(widthMeasureSpec);
int sizeHeight = MeasureSpec.getSize(heightMeasureSpec);
int modelWidth = MeasureSpec.getMode(widthMeasureSpec);
int modelHeight = MeasureSpec.getMode(heightMeasureSpec);
switch (modelHeight){
case MeasureSpec.AT_MOST:
int measuredHeight = 0;
for (int i = 0; i < getChildCount(); i++) {
int measuredWidth = getChildAt(i).getMeasuredWidth();
measuredHeight = getChildAt(i).getMeasuredHeight();
if (leftMargin+measuredWidth+mLeftMargin > getWidth()){
leftMargin = mLeftMargin;
topMargin += measuredHeight+mTopMargin;
}
leftMargin += measuredWidth + mLeftMargin;
}
topMargin += measuredHeight+mTopMargin;
break;
}
setMeasuredDimension(sizeWidth,topMargin);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int leftMargin = mLeftMargin;
int topMargin = mTopMargin;
for (int i = 0; i < getChildCount(); i++) {
int measuredWidth = getChildAt(i).getMeasuredWidth();
int measuredHeight = getChildAt(i).getMeasuredHeight();
if (leftMargin+measuredWidth+mLeftMargin > getWidth()){
leftMargin = mLeftMargin;
topMargin += measuredHeight+mTopMargin;
getChildAt(i).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
}else {
getChildAt(i).layout(leftMargin,topMargin,leftMargin+measuredWidth,topMargin+measuredHeight);
}
leftMargin+=measuredWidth+mLeftMargin;
}
}
}
写个布局————————————————
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="6"
android:background="@null"
android:id="@+id/sousuo_edit"/>
<Button
android:id="@+id/sousuo_btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="搜索"/>
</LinearLayout>
<com.bawei.yuekaomoni_sqw.ui.view.LiuShi
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/liushi">
</com.bawei.yuekaomoni_sqw.ui.view.LiuShi>
</LinearLayout>
最后就是主方法啦————————
public class Main2Activity extends AppCompatActivity {
private EditText sousuo_edit;
private Button sousuo_btn;
private LiuShi liuShi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
sousuo_btn = findViewById(R.id.sousuo_btn);
sousuo_edit = findViewById(R.id.sousuo_edit);
liuShi = findViewById(R.id.liushi);
sousuo_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = sousuo_edit.getText().toString();
TextView textView = new TextView(Main2Activity.this);
textView.setPadding(5,5,5,5);
textView.setText(s);
liuShi.addView(textView);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Main2Activity.this,MainActivity.class);
startActivity(intent);
}
});
}
});
}
最简单的流式布局
最新推荐文章于 2022-06-19 15:09:30 发布