在视图扩展类中创建布局
问题描述:
我对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);
}
}
谢谢。但是现在我有了这个布局,我该如何让它出现在屏幕上呢?我的感觉是,在我的课堂上创建的视图没有被附加到屏幕上。我是否需要退货,使用充气器等? – duanemat 2010-02-15 01:01:22
将视图添加到屏幕上的另一个视图或将其设置为内容视图。在您的活动中使用** setContentView **将其设置为主视图。如果你需要一个小例子,我已经在我的回答中为班级做了一些小测试:http://www.box.net/shared/j9x3076702 – Klarth 2010-02-15 10:49:52