添加的视图现在显示为继承的LinearLayout

时间:2011-05-18 19:55:00

标签: android android-linearlayout

我有一个扩展LinearLayout的类,我在构造函数中添加了一些视图。但是我添加的视图没有显示出来。我做错了什么?

我将背景资源设置为绿色。我确实看到了一个绿色的大广场。所以布局自己出现了。

谢谢!

import android.content.Context;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SuperButton extends LinearLayout 
{

private ImageView buttonImage;
private TextView label;
private Context context;
public SuperButton(Context context, 
        String text,
        int imageResource,
        int backgroundResource) 
{
    super(context);
    this.context = context;

    this.setBackgroundResource(backgroundResource);

    this.label = new  TextView(context);
    this.label.setText("test test test ");

    this.label.setBackgroundColor(0xff0f0f0f);
    this.buttonImage = new ImageView(context);
    this.buttonImage.setImageResource(imageResource);

    this.buttonImage.setLayoutParams(new 
            LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));       
    this.label.setLayoutParams(new LayoutParams(100,100));      

    this.addView(label);    
    this.addView(buttonImage);

}

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
}

public void setButtonImage(ImageView buttonImage) 
{
    this.buttonImage = buttonImage;
}

public ImageView getButtonImage() 
{
    return buttonImage;
}

public void setLabel(TextView label) 
{
    this.label = label;
}

public TextView getLabel() 
{
    return label;
}
}

2 个答案:

答案 0 :(得分:0)

我首先尝试使用层次结构查看器来查看视图树中的信息。您可能会在那里找到答案。

答案 1 :(得分:0)

默认情况下生成的onLayout的覆盖不会将其称为超级。这解决了这个问题。

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b)
{
     super.onLayout(changed, l, t, r, b);       
}