自定义相对布局不显示子视图

时间:2015-02-01 17:03:52

标签: java android view

我正在尝试创建一个包含两个imageView的自定义相对布局。一个图像视图出现在整个屏幕上,另一个图像视图出现在第一个图像视图的左上角。后来我在一个活动的xml文件中使用这个自定义视图。 但是,以下代码不会在显示屏上显示任何/任何视图。只是一个白色的视图。。事实上,在自定义相对布局中没有显示任何内容。

public class MyView extends RelativeLayout{

    private Context context;
    private int padding = 50;
    private int crossImageSize = 30;


    public MyView(Context context) {
        super(context);

        this.context = context;
        init();
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context = context;
        init();
    }

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        this.context = context;
        init();
    }



    public void init()
    {
        setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

        setGravity(Gravity.CENTER);
        ImageView mainImage = new ImageView(context);
        mainImage.setId(1994);
        LayoutParams params = new LayoutParams(getResources().getDisplayMetrics().widthPixels - padding - crossImageSize, getResources().getDisplayMetrics().heightPixels - padding - crossImageSize);

        mainImage.setImageResource(R.drawable.ic_launcher);
        mainImage.setLayoutParams(params);

        addView(mainImage);

        RelativeLayout.LayoutParams crossParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

        crossParams.addRule(RelativeLayout.ALIGN_TOP | RelativeLayout.ALIGN_LEFT, mainImage.getId());
        ImageView crossImage = new ImageView(context);
        crossImage.setImageResource(R.drawable.close);
        crossImage.setLayoutParams(crossParams);

        addView(crossImage);

        Toast.makeText(context, ""+(getResources().getDisplayMetrics().widthPixels - padding - crossImageSize), Toast.LENGTH_SHORT).show();

        TextView tv = new TextView(context);

        tv.setText("hello world");

        addView(tv);
    }
}

使用此视图的活动的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.hello.MyView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fff"/>

  <ListView android:id="@+id/sample_list"
      android:layout_width="match_parent"
      android:layout_height="match_parent"/>



</LinearLayout>

我做错了什么?

0 个答案:

没有答案