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: //
    }
    }
    }
    }
  • 相关阅读:
    LeetCode Lect7 堆及其应用
    Leetcode Lect7 哈希表
    5105 pa3 Distributed File System based on Quorum Protocol
    5105 pa2 Distributed Hash Table based on Chord
    5105 pa1 MapReduce
    分布式系统知识总结
    OS知识点总结
    c++知识点总结3
    c知识点总结2
    c++知识点总结
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/3460111.html
Copyright © 2011-2022 走看看