2012-04-06 116 views
0

我定義了一個擴展LinearLayout的視圖,我想將它放在ViewAnimator中。麻煩的是,它沒有出現。 我不使用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); 

但它不」 t顯示。我很確定,我錯過了一些顯而易見的東西。

+0

'va'是否被添加到您的佈局? – wsanville 2012-04-06 18:35:45

回答

2

我認爲問題在於您從未撥打addView將子女Views添加到您的ViewGroup中。它會是這樣的:

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); 
} 
+0

就是這樣 - 我知道這會很簡單!謝謝 – James 2012-04-06 20:04:10