自定义ViewGroup

时间:2011-08-11 21:40:08

标签: android android-layout android-linearlayout viewgroup

我创建了自己的ViewGroup。我已经在View中添加了一个Widget,我从Eclipse Design Editor中得到了一个错误(我需要预览更快/更好的开发)。

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>

我在模拟器上看不到它。如果我删除“错误行”,Designer将不会出现错误。什么是我的失败或无法渲染Eclipse Designer?但为什么我在模拟器/设备上看不到它?我的目标是使用自定义视图和不带XML的ViewGroup创建此部分。

我希望你能帮助我,抱歉我的英语不好。

谢谢。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,代码中没有错误(运行时),但可视化编辑器无法正确呈现。
我曾经遇到过类似的问题(不完全记得),并且可以通过将可视化编辑器引擎更改为Honeycomb版本来解决它 为此,您首先需要安装Honeycomb SDK(API 11或更高版本)。然后,在右上角的可视化编辑器中,您可以选择它使用的SDK。改为3.x.也许这也适合你。

答案 1 :(得分: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()的用法。