0

ViewAnimatorに配置したいLinearLayoutを拡張するビューを定義しました。問題は、表示されないことです。レイアウトにXMLを使用していないので、LinearLayoutを拡張するクラスがあります。次に例を示します。

public class DetailView extends LinearLayout {

ImageView mImageView;
TextView mTxtName;

public DetailView(Context context) {
    super(context);     
    mTxtName = new TextView(context);

    LinearLayout.LayoutParams lpn = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    lpn.setMargins(3,3,3,3);
    mTxtName.setLayoutParams(lpn);
    mTxtName.setTextAppearance(context, android.R.attr.textAppearanceMedium);


    mImageView = new ImageView(context);
    LinearLayout.LayoutParams lpi = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    lpi.setMargins(10,10,10,10);
    mImageView.setLayoutParams(lpi);
    mImageView.setScaleType(ScaleType.CENTER_INSIDE);
    mImageView.setImageResource(R.drawable.wait);
}

次に、私のアクティビティで次のように追加します。

va = new ViewAnimator(this);
detail = new DetailView(this);
        detail.setOrientation(1);
        LinearLayout.LayoutParams dLayout = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);
va.setLayoutParams(dLayout);
va.addView(detail,0);

しかし、それは表示されません。ばかげて明らかな何かが欠けていると確信しています。

4

1 に答える 1

2

問題は、子を自分addViewのに追加するために電話をかけないことだと思います。次のようになります。ViewsViewGroup

    public DetailView(Context context) {
        super(context);     
        mTxtName = new TextView(context);

        LinearLayout.LayoutParams lpn = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        lpn.setMargins(3,3,3,3);
        mTxtName.setLayoutParams(lpn);
        mTxtName.setTextAppearance(context, android.R.attr.textAppearanceMedium);
        this.addView(mTxtName);//add the view to your viewgroup

        mImageView = new ImageView(context);
        LinearLayout.LayoutParams lpi = new  LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        lpi.setMargins(10,10,10,10);
    mImageView.setLayoutParams(lpi);
    mImageView.setScaleType(ScaleType.CENTER_INSIDE);
    mImageView.setImageResource(R.drawable.wait);
    this.addView(mImageView);
}
于 2012-04-06T18:47:56.087 に答える