2012-12-03 78 views
1

如果我爲一個控件創建子類,例如EditText,我如何在其上應用樣式?如何在自定義視圖上設置樣式

E.g.如果我有我的應用程序一個普通的EditText我可以做的style.xml以下,改變EditText上的所有實例的·外觀:

<style name="AppTheme" parent="android:Theme.Light"> 
    <item name="android:editTextStyle">@style/Edit</item> 
</style> 


<style name="Edit" parent="@android:style/Widget.EditText"> 
    <item name="android:background">@drawable/edit</item> 
</style> 

但是,如果我有子類化的EditText和有一個類MyEditText,我如何將樣式設置爲MyEditText的所有實例?例如: -

<style name="AppTheme" parent="android:Theme.Light"> 
    <item name="MyEditText">@style/Edit</item> 
</style> 

編輯:澄清

嘗試添加新的屬性,然後我將能夠使用的各種事情。

我正在尋找一種方式來簡單地聲明,我想型MyEditText的所有控件有默認的應用程序的範圍@風格/編輯按風格appearande定義。換句話說,就像您可以在主題中設置EditText的默認外觀一樣,如何以同樣的方式設置MyEditText的默認外觀?

回答

-1

您必須使用在您的自定義視圖子類中接受AttributeSet參數的構造函數。然後,將您的樣式聲明爲XML文件,並像通常那樣應用它們。請參閱developer page about Creating a Custom View Class here。祝你好運!

class CustomView extends View { 
public CustomView(Context ctx, AttributeSet attrs) { 
    super(ctx, attrs); 
} 
} 

在你attrs.xml(或其他名稱)是你定義設置樣式屬性

<resources>; 
    <declare-styleable name="CustomView"> 
    <attr name="showText" format="boolean" /> 
    <attr name="labelPosition" format="enum"> 
     <enum name="left" value="0"/> 
     <enum name="right" value="1"/> 
    </attr> 

在你的XML,你包括這些屬性這樣

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews"> 
<com.example.customviews.CustomView 
custom:showText="true" 
custom:labelPosition="left" /> 
</LinearLayout> 
+0

這雖然很有用,但並不能回答我的問題。我會盡力澄清這個問題。 – gabga

相關問題