Android ViewGroup等容器控件的使用
2013-12-05 17:57
567 查看
在Android中,可以自定义类,继承ViewGroup等容器类,以实现自己需要的布局显示。如果你在ViewGroup中增加了控件,却无法显示出 来,那么下面这个例子,就可以用来参考了。(主要是要实现onLayout()方法,在这个方法中,对每个子控件进行measure(),然后再布局。)
java代码:
package com.arui;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
/** * Example for using ViewGroup. *
* @version 2010/09/07 * */
public class MyViewGroup extends ViewGroup {
public MyViewGroup(Context context) {
super(context);
this.initOtherComponent(context);
}
private void initOtherComponent(Context context) {
Button aBtn = new Button(context);
// set id 1 aBtn.setId(1);
aBtn.setText("a btn");
this.addView(aBtn);
Button bBtn = new Button(context);
// set id 2 bBtn.setId(2);
bBtn.setText("b btn");
this.addView(bBtn);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
switch (child.getId()) {
case 1:
// 1 is aBtn Log.d("MyViewGroup", "btn1 setting");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
child.layout(0, 0, child.getMeasuredWidth(), child .getMeasuredHeight());
break;
case 2:
// 2 is bBtn Log.d("MyViewGroup", "btn2 setting");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
child.layout(0, 50, child.getMeasuredWidth(), child .getMeasuredHeight() + 50);
break;
default: //
}
}
}
}
java代码:
package com.arui;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
/** * Example for using ViewGroup. *
* @version 2010/09/07 * */
public class MyViewGroup extends ViewGroup {
public MyViewGroup(Context context) {
super(context);
this.initOtherComponent(context);
}
private void initOtherComponent(Context context) {
Button aBtn = new Button(context);
// set id 1 aBtn.setId(1);
aBtn.setText("a btn");
this.addView(aBtn);
Button bBtn = new Button(context);
// set id 2 bBtn.setId(2);
bBtn.setText("b btn");
this.addView(bBtn);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
switch (child.getId()) {
case 1:
// 1 is aBtn Log.d("MyViewGroup", "btn1 setting");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
child.layout(0, 0, child.getMeasuredWidth(), child .getMeasuredHeight());
break;
case 2:
// 2 is bBtn Log.d("MyViewGroup", "btn2 setting");
child.setVisibility(View.VISIBLE);
child.measure(r - l, b - t);
child.layout(0, 50, child.getMeasuredWidth(), child .getMeasuredHeight() + 50);
break;
default: //
}
}
}
}
相关文章推荐
- Android中ViewGroup等容器控件的使用
- Android中ViewGroup等容器控件的使用
- Android中ViewGroup等容器控件的使用
- Android ViewGroup系列控件的使用
- Android自定义控件之继承ViewGroup创建新容器
- Android自定义控件之继承ViewGroup创建新容器(四)
- Android自定义控件之继承ViewGroup创建新容器
- Android ViewGroup系列控件的使用
- 使用android:layout_weight属性来给view group中各个控件设置所占空间大小比重
- Android中的View与ViewGroup绘制过程,手势监听顺序与使用
- Android自定义ViewGroup之子控件的自动换行和添加删除
- android7.1原生控件:BottomNavigationView学习使用
- android AutoCompleteTextView控件的使用
- Android RecyclerView 使用完全解析 体验艺术般的控件
- Android仿人人客户端(v5.7.1)——采用ViewGroup做父容器,实现左侧滑动菜单(三)
- android控件-ImageView使用方法整理
- Android 控件架构及View、ViewGroup的测量
- 使用android的webview控件访问有道词典的url
- Android使用Fragment,不能得到Fragment内部控件,findViewById()结果是Null--已经解决
- Android-控件WebView的基本使用