我当前的应用程序中有几个按钮。除了文本和标签外,它们都是相同的。如果我不必重复每个按钮的所有按钮配置信息,那么main.xml会更好。
有没有办法将按钮定义为模板,然后使用它作为模板?
在这个例子中,我有大约10个以下内容:
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="Y"
android:typeface="monospace"
android:textSize="12pt"
android:tag="Y"
android:textColor="@color/button_text"
android:background="@drawable/grey_blank_48x48"
android:onClick="onButtonClicked"/>
如果我有一个,然后其中9个会很好:
<Button2
android:text="N"
android:tag="N"/>
解决
就像@Luksprog说的那样:
<style name="ASR33_button" >
<item name="android:id">@+id/button</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:padding">10dp</item>
<item name="android:textColor">@color/button_text</item>
<item name="android:background">@drawable/grey_blank_48x48</item>
<item name="android:onClick">onButtonClicked</item>
<item name="android:typeface">monospace</item>
<item name="android:textSize">12pt</item>
</style>
使用main.xml这样的东西:
<Button
style="@style/ASR33_button"
android:tag="Y"
android:text="Y"
/>
<Button
style="@style/ASR33_button"
android:tag="N"
android:text="N"
/>
这有一天。
答案 0 :(得分:12)
我们style
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="btnlook" >
<item name="android:id">@+id/button</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:padding">10dp</item>
<item name="android:textColor">@color/button_text</item>
<item name="android:background">@drawable/grey_blank_48x48</item>
<item name="android:onClick">onButtonClicked</item>
<item name="android:typeface">monospace</item>
<item name="android:textSize">12pt</item>
</style>
</resources>
然后在你的xml布局中:
<Button
style="@style/btnlook"
android:text="N"
android:tag="N"/>
答案 1 :(得分:3)
您可以创建一个自定义视图来扩展按钮并设置所有重复的内容。然后你可以按照你的描述使用它,但是使用完全限定的名称,而不仅仅是短名称。
class MyButton extends Button {
public MyButton() {
// Set the values you want
}
}
用XML:
<com.me.myapp.MyButton
android:text="N"
android:tag="N" />
答案 2 :(得分:0)
您可以创建selector
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#AAFFFFFF"/>
<corners android:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"/>
然后设置10按钮android:background="@drawable/that_selecter"
答案 3 :(得分:0)
这样做的唯一方法是使自定义按钮子类化按钮。