在自定义视图中提供默认样式(属性)

时间:2012-05-21 08:33:56

标签: android view background widget styles

请告诉我,如何将自定义按钮的默认背景设置为空。

我的意思是...... 我知道我可以定义一个“样式”,它将android:background设置为“@null”, 并要求用户在其布局中明确应用样式。例如:

<style name="MyButton" parent="@android:style/Widget.Button">
    <item name="android:background">@null</item>
</style>

<com.xxx.widget.MyButton
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/MyButton"
    android:text="MyButton" />

以上代码运作良好。 但是如何在内部“MyButton”类中应用此样式并让用户不要明确设置样式?

例如,如何使以下布局像以前一样工作:

<com.xxx.widget.MyButton
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="MyButton" />

我尝试在构造函数中执行此操作,如下所示,但它不起作用。

public MyButton(Context context, AttributeSet attrs) {
    this(context, attrs, com.xxx.R.style.MyButton);
}

PS。我想在用户未设置背景时应用此“null”背景     明确。

2 个答案:

答案 0 :(得分:0)

在MyButton()构造函数中,为什么不调用setBackground(null)?

答案 1 :(得分:0)

这或多或少是一种廉价的方法,但为什么不将背景设置为透明方块。像这样 - &gt;

transparent_square.xml :(将其放在drawable目录中)

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/square"
    android:>

    <solid android:color="#00808080"></solid> // The first two zeros set the alpha
                                              // to 0

</shape>

然后将按钮的背景设置为可绘制的。

按钮:

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Send"
        android:id="@+id/sendButton"
        android:layout_weight="1"
        android:background="@drawable/transparent_square"/>