Android 嵌套视图不进行渲染
如果这个问题不合适,或者在错误的部分,对此网站非常抱歉 安卓: 我已经编写了一个自定义按钮类,它扩展了视图,工作得很好。现在,我想创建一个数字键盘类,它使用一些以特定方式排列的自定义按钮,然后我可以在电话拨号器应用程序中使用这些按钮。我可以从应用程序的主要活动中构建小键盘,看起来还可以,但我想在自己的类中构建小键盘,以便于重复使用。当我将代码移动到它自己的类中时,屏幕上要么出现错误,要么什么都没有。我认为部分问题在于子视图被添加到了什么类中 以下是我在主要活动中的代码:Android 嵌套视图不进行渲染,android,view,nested,Android,View,Nested,如果这个问题不合适,或者在错误的部分,对此网站非常抱歉 安卓: 我已经编写了一个自定义按钮类,它扩展了视图,工作得很好。现在,我想创建一个数字键盘类,它使用一些以特定方式排列的自定义按钮,然后我可以在电话拨号器应用程序中使用这些按钮。我可以从应用程序的主要活动中构建小键盘,看起来还可以,但我想在自己的类中构建小键盘,以便于重复使用。当我将代码移动到它自己的类中时,屏幕上要么出现错误,要么什么都没有。我认为部分问题在于子视图被添加到了什么类中 以下是我在主要活动中的代码: public void
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(1);
LcarsButton numericPad[] = new LcarsButton[10]; //array of buttons
LinearLayout rows[] = new LinearLayout[3];
for(int i=0;i<=2;i++)
{
rows[i] = new LinearLayout(this);
for(int j=1;j<=3;j++)
{
int k = (i * 3) + j;
numericPad[k] = new LcarsButton(this);
numericPad[k].label = "" + k;
rows[i].addView(numericPad[k]);
}
layout.addView(rows[i]);
}
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
LinearLayout布局=新的LinearLayout(本);
布局。设置方向(1);
LcarsButton numericPad[]=新LcarsButton[10];//按钮数组
LinearLayout行[]=新的LinearLayout[3];
对于(int i=0;i我猜错误的原因是您使用了layout
变量,该变量在onCreate()中定义
。您需要将行
数组传递给主活动,然后从主活动将其添加到布局中。我猜错误的原因是您正在使用布局
变量,该变量在onCreate()中定义
。您需要将行
数组传递到主活动,然后从主活动将其添加到布局。在哪里设置布局参数?我在新LinearLayout()的声明中设置了布局参数但由于这不起作用,我将代码简化为基本内容。我认为您至少不需要它们来在显示器上显示一些内容,对吗?我肯定我以前只使用过LinearLayout(上下文)…您在哪里设置布局参数?我在新LinearLayout()的声明中设置了它们但是,由于这不起作用,我将代码简化为基本内容。我认为您至少不需要它们来显示某些内容,对吗?我确信我以前只使用了LinearLayout(上下文)…嗯…如果可能的话,我会尝试将嵌套布局保留在类中。如果我使用layout.addView(rows[I]),会更好吗在onCreate()方法中?显然,我必须将其传递到行[]再次循环…原因是我希望能够创建预定义的控件组,这些控件组可以快速放入其他应用程序中,而不会使它们的活动代码复杂化。然后在自定义Numpad的构造函数中,将布局传递到要添加行的位置,以便可以在该类中获取布局对象.aaaaaaaaah听起来像是罚单!所以类似于…公共类LcarsNumPad扩展了LinearLayout{public LcarsNumPad(上下文,布局布局){…Layout.addView(rows[i]);太棒了!刚刚尝试过,这似乎已经成功了:)谢谢,CreatorHmm…如果可能的话,我正在尝试将嵌套布局保留在类中。如果我在onCreate()方法中执行layout.addView(rows[I]),会更好吗?显然,我必须将其传递到rows[]再次循环…原因是我希望能够创建预定义的控件组,这些控件组可以快速放入其他应用程序中,而不会使它们的活动代码复杂化。然后在自定义Numpad的构造函数中,将布局传递到要添加行的位置,以便可以在该类中获取布局对象.aaaaaaaaaaah听起来像是罚单!所以类似于…公共类LcarsNumPad扩展了LinearLayout{public LcarsNumPad(上下文上下文,布局布局){…Layout.addView(rows[i]);太棒了!刚刚尝试过,这似乎成功了:)谢谢,创建者
public class LcarsNumPad extends LinearLayout {
public LcarsNumPad(Context context) {
super(context);
this.setOrientation(VERTICAL);
LinearLayout layout = new LinearLayout(context);
LcarsButton numericPad[] = new LcarsButton[10];
layout.setOrientation(1);
LinearLayout rows[] = new LinearLayout[3];
for(int i=0;i<=2;i++)
{
rows[i] = new LinearLayout(context);
for(int j=1;j<=3;j++)
{
int k = (i * 3) + j;
numericPad[k] = new LcarsButton(context);
numericPad[k].label = "" + k;
rows[i].addView(numericPad[k]);
}
layout.addView(rows[i]);
}