我在库应用程序中创建了一个自定义复合视图,一切正常。当我添加自定义属性进行查看时,我总是得到默认值。我跟着this steps只有一个区别:我的观点是在图书馆项目中。
/res/values/attrs.xml
<resources>
<declare-styleable name="DatePickerView">
<attr name="showToday" format="boolean" />
<attr name="calendar" format="enum">
<enum name="jalali" value="0" />
<enum name="gregorian" value="1" />
</attr>
</declare-styleable>
</resources>
包含视图的布局文件:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:farayan="http://schemas.android.com/apk/lib/net.farayan.android.view"
...
<net.farayan.android.view.datepicker.DatePickerView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
farayan:showToday="false"
farayan:calendar="gregorian"/>
...
组件代码:
int calendar;
boolean showToday;
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DatePickerView, 0, 0);
try {
calendar = a.getInteger(R.styleable.DatePickerView_calendar, 0);
showToday = a.getBoolean(R.styleable.DatePickerView_showToday, true);
} finally {
a.recycle();
}
calendar
和showToday
分别始终为0
和true
。有什么想法吗?
答案 0 :(得分:0)
看起来有些事情不在这里:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:farayan="http://schemas.android.com/apk/lib/net.farayan.android.view"
如何改变:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:farayan="http://schemas.android.com/apk/res/net.farayan.android.view"
net.farayan.android.view
是您的应用根名称空间。
的 UPDATE1 强> 的
的xmlns:farayan = “http://schemas.android.com/apk/res/your_main_app_package”
Here就是一个例子。它使用库项目中定义的视图。
答案 1 :(得分:0)
如果我们添加新的复合视图代码及其attributesinside项目,我们应该在布局的开头添加它:
xmlns:custom="http://schemas.android.com/apk/res/your_main_app_package
如果新的复合视图位于链接到我们的peoject的库项目中,我们应该添加:
xmlns:custom="http://schemas.android.com/apk/res-auto