在视图扩展类中创建布局

问题描述:

我对Android开发还很陌生,而且我一直无法找到任何有关如何执行此操作的示例。在视图扩展类中创建布局

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

我想我的问题是对视图更好的理解。我见过的所有示例都关注将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); 
} 

我认为这个问题是你不增加布局,以你的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); 
    } 
} 
+0

谢谢。但是现在我有了这个布局,我该如何让它出现在屏幕上呢?我的感觉是,在我的课堂上创建的视图没有被附加到屏幕上。我是否需要退货,使用充气器等? – duanemat 2010-02-15 01:01:22

+0

将视图添加到屏幕上的另一个视图或将其设置为内容视图。在您的活动中使用** setContentView **将其设置为主视图。如果你需要一个小例子,我已经在我的回答中为班级做了一些小测试:http://www.box.net/shared/j9x3076702 – Klarth 2010-02-15 10:49:52