2014-03-31 99 views
0

我有一个扩展LinearLayout的类,它接收一个数组并根据数组创建一个布局。XML中的自定义线性布局

现在在活动的OnCreate方法中创建布局,并使用setContentView 来布局。 我想知道我是否可以在XML中使用它,因为我会在LayoutLayout文件中使用LinearLayout或类似的方法。

回答

0

如果要在布局中使用自定义LinearLayout,请用<path_to_your_custom_layout_class...声明新元素。

+0

好吧,但我怎么会传递我的布尔multidimesinal数组呢? – aclokay

+0

运行前有数组吗? –

+0

@ user1050389简短的回答是你不能。您可以使您的布局可定制并应用自定义属性,但无法在Android上使用XML创建二维数组。所以,你将不得不以编程方式进行。 – adneal

0

是的,你可以。

在XML布局

<com.my.package.MyView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:MyStyleable="http://schemas.android.com/apk/res/com.my.package" 
    android:id="@id/id" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    MyStyleable:attr1="ATTR1 VALUE" 
    MyStyleable:attr2="ATTR2 VALUE" /> 

通知自定义xml namespace xmlns:MyStyleable其中将包含自定义属性。

定义自定义属性在res/values/attr.xml

<resources> 
    <attr name="attr1" format="string" /> 
    <attr name="attr2" format="boolean" /> 
</resources> 

然后在您的自定义视图类,从XML检索值:

String attr1 = a.getString(R.styleable.attr1); 
boolean attr2 = a.getBoolean(R.styleable.attr2); 

希望很明显。 !

+0

但我需要一组布尔值。不只是一个属性 – aclokay

+0

你可以用同样的方法做到这一点。创建一个'String'属性将布尔数组的名称传递给您的自定义视图! –