2014-11-08 90 views
2

標題說明了這一切,希望。以編程方式創建視圖後添加樣式

1)我創建一個視圖編程:

RelativeLayout rl = new RelativeLayout(this); 

2)我想將它添加到現有的LinearLayout之後,我想樣式添加到RelativeLayout的。例如:

LinearLayout ll = (LinearLayout) findViewById(R.id.MyLinearLayout); 
RelativeLayout rl = new RelativeLayout(this); 
ll.addView(rl); 
//add Style to rl here 

我找不到辦法做到這一點!

我知道有辦法以編程方式添加一個樣式。類似於:

RelativeLayout rl = new RelativeLayout(this, null, R.style.MyRelativeLayout); 

但是,這會在我將相關佈局添加到linearlayout之前添加樣式。 因此,relativelayout不是「打印」的,因爲在我將它添加到linearlayout之前,他應該如何知道該linearlayout是他的父項。

有沒有人有辦法如何添加一個Style以編程方式添加到視圖後,該視圖已被創建並添加到父視圖?

希望你明白我的意思。

+0

「印刷」是什麼意思? – alanv 2014-11-09 01:58:16

回答

7

構建視圖後無法應用樣式。這樣做的正確方法是在Android 5.0+上使用4參數構造函數,或者創建一個引用您的樣式並使用3參數構造函數的主題屬性。

// Works on versions prior to Android 5.0 
RelativeLayout rl = new RelativeLayout(this, null, R.attr.myRelativeLayoutStyle); 

// Works on Android 5.0 and above 
RelativeLayout r2 = new RelativeLayout(this, null, 0, R.style.MyRelativeLayout); 

RES /值/ attrs.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="myRelativeLayoutStyle" format="reference" /> 
    ... 

RES /值/ styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyRelativeLayout"> 
     ... 
    </style> 
    ... 

RES /值/的themes.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyAppTheme" parent="..."> 
     <item name="myRelativeLayoutStyle">@style/MyRelativeLayout</item> 
     ... 
+0

我在哪裏正確地把主題和attrs.XML文件?直接進入值或者我應該創建一個單獨的文件夾? @alanv – Mike 2014-11-11 07:43:05

+0

attrs.xml使用哪種資源類型?我只能選擇值來獲取資源@alanv – Mike 2014-11-11 07:57:06

+0

啊,對不起,我忘了給路徑添加「值」。他們都應該去水庫/價值觀。 – alanv 2014-11-11 17:56:11