不知道在哪个博客里看到的整理了一遍
创建一个继承ViewGroup的类
public class SearchView extends ViewGroup
重写onMeasure
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//测量
measureChildren(widthMeasureSpec, heightMeasureSpec);
}
重写onLayout
int left_back=20;
int back=20;
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
//上边距
int up_below_back=back;
//左边距
int around_back=left_back;
for (int i =0;i<getChildCount();i++){
//获取宽高
int measuredHeight = getChildAt(i).getMeasuredHeight();
int measuredWidth = getChildAt(i).getMeasuredWidth();
//判断
if (measuredWidth+left_back+around_back>getWidth()){
around_back=20;
up_below_back+=back+measuredHeight;
getChildAt(i).layout(around_back,up_below_back,around_back+measuredWidth,up_below_back+measuredHeight);
}else{
getChildAt(i).layout(around_back,up_below_back,around_back+measuredWidth,up_below_back+measuredHeight);
}
around_back+=left_back+measuredWidth;
}
}
具体的使用
//找到自定义的类
<com.mod.SearchView
android:id="@+id/search"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.mod.SearchView>
//获取内容
String trim = et_search.getText().toString().trim();
//创建一个TextView
TextView textView = new TextView(SearchActivity.this);
textView.setBackgroundResource(R.drawable.shop_30);
//把内容添加到TextView
textView.setText(trim);
//设置自定义大小
ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(
ViewGroup.MarginLayoutParams.WRAP_CONTENT,
ViewGroup.MarginLayoutParams.WRAP_CONTENT
);
//把TextView和大小传过去
search.addView(textView,params);