我有一个扩展LinearLayout的类,它接收一个数组并根据数组创建一个布局。XML中的自定义线性布局
现在在活动的OnCreate方法中创建布局,并使用setContentView 来布局。 我想知道我是否可以在XML中使用它,因为我会在LayoutLayout文件中使用LinearLayout或类似的方法。
我有一个扩展LinearLayout的类,它接收一个数组并根据数组创建一个布局。XML中的自定义线性布局
现在在活动的OnCreate方法中创建布局,并使用setContentView 来布局。 我想知道我是否可以在XML中使用它,因为我会在LayoutLayout文件中使用LinearLayout或类似的方法。
如果要在布局中使用自定义LinearLayout
,请用<path_to_your_custom_layout_class...
声明新元素。
是的,你可以。
在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);
希望很明显。 !
但我需要一组布尔值。不只是一个属性 – aclokay
你可以用同样的方法做到这一点。创建一个'String'属性将布尔数组的名称传递给您的自定义视图! –
好吧,但我怎么会传递我的布尔multidimesinal数组呢? – aclokay
运行前有数组吗? –
@ user1050389简短的回答是你不能。您可以使您的布局可定制并应用自定义属性,但无法在Android上使用XML创建二维数组。所以,你将不得不以编程方式进行。 – adneal