2017-02-10 40 views
-1

我穿過所有給定的構造樣式參考:如何在不使用樣式屬性的情況下設置自定義視圖的樣式?

public MyCustomView(Context context) 
{ 
    super(context, null, R.style.MyStyle); 
} 
public MyCustomView(Context context, AttributeSet attrs) 
{ 
    super(context, attrs, R.style.MyStyle); 
} 
public MyCustomView(Context context, AttributeSet attrs, int defStyle) 
{ 
    super(context, attrs, R.style.MyStyle); 
} 

我的棉花糖嘗試此。樣式不適用,但在通過樣式屬性應用時起作用。

+0

據我所知,有4個不是3視圖的構造函數 – Selvin

+0

是不是假設是'super'而不是'this' –

回答

0

嘗試使用三個參數的構造函數與ContextThemeWrapper如下:

MyCustomView mView = new MyCustomView(new ContextThemeWrapper(this,R.style.yourStyle),null,0); 

當你MyCustomView類的構造函數如下:

public MyCustomView(Context context, AttributeSet attrs, int defStyle) 
{ 
    super(context, attrs, defStyle); 
} 

這應該工作。

+0

但是如何通過xml來實現呢? –

+0

您可以通過爲其分配自定義樣式來覆蓋您的_Activity_或_Application's_ _theme_屬性,並將其應用於整個_Activity_或_Application_,但是如果您想在xml中設置單個視圖的樣式,那麼這是我認爲您可以通過xml(通過設置樣式屬性)。而且這也是有道理的,沒有人需要通過其他方式來做這樣的事情。 [你應該在這裏詳細研究](https://developer.android.com/guide/topics/ui/themes.html) –

相關問題