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がエラーなしで私の見解を示し
聞こえますあなたは答えを得ることができるリンクですhttp://stackoverflow.com/questions/15423149/how-to-use-isineditmode-to-see-layout-with-custom-view-in-the-editor –
@ DhavalkumarSolanki、私はこの記事をすでに読んでいます。 'isInEditMode()'を使用しますが、動作しません! – Nolesh
誤解をおかけして申し訳ありません –