2016-03-26 10 views
0

私はカスタムビューを作成しました。これは、実際のデバイス上で完璧に動作しますが、デザインモードの日食が言うには:View.isInEditMode()はコードをスキップしません

The following classes could not be instantiated: 
- com.test.MyBanner (Open Class, Show Error Log) 
See the Error Log (Window > Show View) for more details. 
Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse 

私のコードは非常に簡単です:

public class MyBanner extends WebView { 

public MyBanner(Context context) { 
    super(context);  
} 

public MyBanner(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public MyBanner(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 

@Override 
protected void onAttachedToWindow() { 
    super.onAttachedToWindow();   

    if(this.isInEditMode()){    
     getLayoutParams().height = 80;   
    } 
    else{  
     getLayoutParams().height = 80; 

     //Logotype---------------------------------------------- 
     RelativeLayout rl = new RelativeLayout(getContext()); 
     rl.setLayoutParams(getLayoutParams()); 

     RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(100, 100); 

     rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
     rlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); 

     ImageView logotype = new ImageView(getContext());       
     logotype.setBackgroundColor(Color.TRANSPARENT); 

     logotype.setImageResource(R.drawable.ic_launcher); 
     rl.addView(logotype, rlp); 

     ViewGroup v = (ViewGroup)MyBanner.this; 
     v.addView(rl); //If I comment this it works perfect.   
    } 
}  
} 

は、XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/bannerContainer"> 

<TextView 
     android:id="@+id/bannerHeader" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"    
     android:gravity="center" 
     android:text="@string/banner_tab_text" /> 

<com.test.MyBanner android:id="@+id/banner" 
    android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_below="@id/bannerHeader"/> 

</RelativeLayout> 

私がコメントする場合v.addView(rl);日食が私を示し正しく表示されます。私がthis.isInEditMode()を使用しているその事実にもかかわらず、Eclipseがすべてのコードを読むように思えます。おそらく、これは日食バグです。どのようにthis.isInEditMode()状態外のコードの行を無視して日食を作るには?以下のいずれかに

ViewGroup v = (ViewGroup)MyBanner.this; 
v.addView(rl); 

this.addView(rl); 

今すぐEclipseがエラーなしで私の見解を示し

+0

聞こえますあなたは答えを得ることができるリンクですhttp://stackoverflow.com/questions/15423149/how-to-use-isineditmode-to-see-layout-with-custom-view-in-the-editor –

+0

@ DhavalkumarSolanki、私はこの記事をすでに読んでいます。 'isInEditMode()'を使用しますが、動作しません! – Nolesh

+0

誤解をおかけして申し訳ありません –

答えて

0

私は、問題のあるコードを交換してきました。

関連する問題