在View-extended类中创建布局

时间:2010-02-14 01:22:07

标签: android uiview view

我仍然是Android开发的新手,我还没有找到任何如何做到这一点的例子。

在我的Activity中,我使用“setContextView(new myViewClass)”将View-extended类指定为要加载的类。在加载视图方面一切正常,我根据许多条件创建各种元素(LinearLayouts,按钮等)。不幸的是,我无法将这些元素中的任何元素实际显示在屏幕上。

我想我的问题是对Views的更好理解。我看到的所有示例都涉及将xml文件设置为基本视图,然后在代码中对其进行更改。有没有替代方案?

感谢。

这是我一直在努力工作的示例代码。还有其他事情正在发生,但这是相关信息。对于程序上下文,此类由setContextView(new createView(this))

证实
public createView(Context c){
    super(c);

    // Create a simple layout
    LinearLayout layout = new LinearLayout(top.getContext());
    layout.setOrientation(LinearLayout.VERTICAL);


    // Create test text
    TextView mTestText = new TextView(c);
    mTestText.setText("This is a test");

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    lp.setMargins(10, 10, 10, 10);
    layout.addView(mTestText, lp);
}

1 个答案:

答案 0 :(得分:1)

我认为问题在于您没有将布局添加到 CreateView 。但是,查看类没有添加方法(请参阅http://developer.android.com/reference/android/view/View.html)。

由于 LinearLayout 是扩展视图的基本视图,因此您可以扩展 LinearLayout ,并将 TextView 添加到扩展类中。如果你这样做,你的 CreateView 类可能看起来像这样:

/**
 * Since the LinearLayout is the base layout, we'll extend it.
 */
public class CreateView extends LinearLayout {
    public CreateView(Context context) {
        super(context);
        setOrientation(LinearLayout.VERTICAL);

        TextView mTestText = new TextView(context);
        mTestText.setText("This is a test");

        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
        lp.setMargins(10, 10, 10, 10);
        addView(mTestText, lp);
    }
}