我是Android开发的新手,我正在努力工作。我想创建一个TextView,EditText和SkillDiceButton(它是Button类的扩展)的复合视图(称为SkillDiceGroup)。当我将SkillDiceGroup声明为纯代码并将其放入我的XML布局时,我有它的工作:
<com.jeremybush.d20.SkillDiceGroup android:id="@+id/skillDiceTest"
android:title="Foobar!"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.jeremybush.d20.SkillDiceGroup>
我有这段代码:
public class SkillDiceGroup extends LinearLayout
{
// The View components
private TextView mTitle;
private EditText mSkill;
private SkillDiceButton mDice;
public SkillDiceGroup(Context context, AttributeSet attrs)
{
super(context);
this.setOrientation(HORIZONTAL);
mTitle = new TextView(context);
mTitle.setText("foobar");
addView(mTitle, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
));
mSkill = new EditText(context);
addView(mSkill, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
));
mDice = new SkillDiceButton(context, attrs);
mDice.setText("d20");
addView(mDice, new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
));
}
private class SkillDiceButton extends DiceButton
{
public SkillDiceButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void onClick(View view)
{
modifier = Integer.parseInt(mSkill.getText().toString());
super.onClick(view);
}
}
}
这是我想要的方式,但我想自己在xml视图中声明这三个项目。我怎么能这样做?
答案 0 :(得分:1)
您应该查看Android提供的有关xml布局的大量文档,例如:declaring layout,common layout objects和hello views,其中包含每种布局类型的详细示例。< / p>
直接从LinearLayout教程中获取包含3个项目的布局:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<TextView
android:text="row one"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row two"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row three"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<TextView
android:text="row four"
android:textSize="15pt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
只需用EditText和SkillDiceButton替换后两个文本视图。
答案 1 :(得分:0)
如果您不想创建自己的“隐藏”内部布局结构的视图/窗口小部件,并且可以在各个地方重复使用 - 您应该阅读有关creating custom components的文档
还会阅读有关代码和LayoutInflater
的内容但是如果只想使用SkillDiceGroup一次 - 只需按照Mayra的建议创建布局