我是Android開發的新手,並且正在努力工作。我想創建一個TextView,EditText和SkillDiceButton(它是Button類的擴展)的複合視圖(稱爲SkillDiceGroup)。我把它放在這在我的XML佈局工作,宣佈我SkillDiceGroup作爲純代碼的時候,和:Android XML Composite View
<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視圖中自行聲明三個項目。我怎樣才能做到這一點?
我一直在閱讀文檔,但我不確定這個示例是否完全相同。請注意,在我的代碼結尾處,我有修飾符賦值,其中引用了mSkill變量。由於我需要的邏輯,我不認爲你的例子是直接翻譯。雖然我可能(可能是)錯了。 – zombor 2010-12-15 18:41:38
任何邏輯都應該在你的Activity類中,而不是你的視圖類中。如果您想查看其中的文本或添加點擊偵聽器,則可以通過ID訪問佈局的元素。它可以幫助您完成其中一個完整的示例,例如記事本教程:http://developer.android.com/guide/tutorials/notepad/index.html,以瞭解所有內容如何組合在一起。 – 2010-12-15 19:00:13
這是正確的方法,如果您的自定義視圖需要自己的額外屬性,您也可以添加自己的xmlns。該項目中的面板小部件提供了一個如何添加自己的屬性的示例。 http://code.google.com/p/android-misc-widgets/您還可以使用findViewById獲取對您的活動中的自定義視圖的引用,並手動設置額外的屬性。這兩種解決方案都不會是錯的。 – schwiz 2010-12-15 19:03:58