//流式布局 activity
public class SelfActivity extends AppCompatActivity {
private EditText mEditText;
private List<String> stringList=new ArrayList<>();
private SelfView mSelfView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_self);
mSelfView=(SelfView)findViewById(R.id.self_view);
mEditText=(EditText)findViewById(R.id.edtext);
findViewById(R.id.add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String message=mEditText.getText().toString().trim();
if(TextUtils.isEmpty(message)){
Toast.makeText(SelfActivity.this,"内容不能为空",Toast.LENGTH_SHORT).show();
return;
}
stringList.add(message);
mSelfView.setListData(stringList);
}
});
}
}
/ *
*继承LinearLayout
*/
public class LiuShiView extends LinearLayout {
private LinearLayout allLayout;
public LiuShiView(Context context) {
super(context);
init(context);
}
public LiuShiView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public LiuShiView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
//在上边吧context传过来低耦合
private Context context;
private void init(Context context) {
this.context = context;
View viewV = View.inflate(context,R.layout.layout_all,null);
allLayout = (LinearLayout) viewV.findViewById(R.id.all_layout);
addView(viewV);
}
private void setList(List<String> arrayList) {
allLayout.removeAllViews();
LinearLayout view = (LinearLayout) View.inflate(context, R.layout.self_view_h, null);
allLayout.addView(view);
int len =0;
view.removeAllViews();
for (int a =0;a<arrayList.size();a++){
String msg = arrayList.get(a);
len += msg.length();
//如果长度大于22 重新创建layout起到换行的作用
if (len > 22){
view = (LinearLayout) View.inflate(context, R.layout.self_view_h, null);
allLayout.addView(view);
len = 0;
}
View edText = View.inflate(context, R.layout.self_view_text, null);
TextView text = edText.findViewById(R.id.tv_txt);
text.setText(msg);
view.addView(edText);
LinearLayout.LayoutParams params= (LinearLayout.LayoutParams) edText.getLayoutParams();
//调试一下 外边距 看起来更有美感
params.weight=1;
params.leftMargin=10;
params.rightMargin=10;
params.topMargin=10;
edText.setLayoutParams(params);
}
}
/**
*
* 传递数据
* @param listData
*/
public void setListData(ArrayList<String> listData) {
if (!listData.isEmpty())
{
setList(listData);
}
}
}