zoukankan      html  css  js  c++  java
  • Android ViewGroup等容器控件的使用

    在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: //
    }
    }
    }
    }
  • 相关阅读:
    npm --save-dev 与 --save 的区别
    Vue 简单实例 购物车2
    Vue 简单实例 购物车1
    node.js富文本编辑器
    使用jquery操作session
    浏览器窗口之间传递数据
    批量修改文件编码格式
    具有动态效果的响应式设计
    Ajax请求全局配置
    html实体转换
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/3460111.html
Copyright © 2011-2022 走看看