0

独自の ViewGroup を作成しました。すでにビューにウィジェットを追加していますが、Eclipse デザイン エディターからエラーが発生します (開発を高速化または改善するには、プレビューが必要です)。

public class MyViewGroup extends LinearLayout {
    public MyViewGroup(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.addView(new EditText(context));  // The Error Line
    }
...
}

LayoutParams では何も変更しません。

this.addView(new Button(mcontext),
            new LinearLayout.LayoutParams(
                    LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
 <...MyViewGroup android:layout_height="match_parent" android:layout_width="match_parent" android:layout_margin="2dip" android:id="@+id/Token01">    </...MyViewGroup>
</LinearLayout>

エミュレーターには表示されません。「エラー行」を削除すると、デザイナーはエラーを受け取りません。私の失敗、または Eclipse Designer をレンダリングできないのは何ですか? しかし、なぜエミュレーター/デバイスでそれを見ることができないのですか? 私の目的は、XML を使用せずにカスタム ビューと ViewGroup を使用してこの部分を作成することです。

あなたが私を助けてくれることを願っています。私の悪い英語を申し訳ありません.

ありがとうございました。

4

2 に答える 2

0

私は次のことを試しましたが、Android 2.3.1 以降では魅力的に動作します。2.2以前では動作しませんでした。

public class MyViewGroup extends LinearLayout {
   public MyViewGroup(Context context, AttributeSet attrs) {
      super(context, attrs);

      if (isInEditMode()) {
         final EditText editText = new EditText(context);
         editText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
               LayoutParams.WRAP_CONTENT));
         addView(editText);
      }
   }
}

isInEditMode() の使用法にも注意してください。

于 2011-08-11T22:09:00.390 に答える
0

私の理解が正しければ、(実行時に) コードにエラーはありませんが、ビジュアル エディターはそれを正しくレンダリングしません。
私はかつて同様の問題を抱えていましたが (正確には覚えていません)、ビジュアル エディター エンジンを Honeycomb バージョンに変更することで解決できました。
そのためには、まず Honeycomb SDK (API 11 以上) をインストールする必要があります。次に、右上隅のビジュアル エディターで、使用する SDK を選択できます。3.x に変更します。多分これはあなたにも有効です。

于 2011-08-11T21:52:39.233 に答える