我正在尝试将DragnDrop列表视图从此处https://github.com/commonsguy/cwac-touchlist转换为C#with Mono for Android。
此自定义View的一部分需要使用在文件Resources / values / attrs.xml中声明为以下内容的一些自定义属性:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="TouchListView">
<attr name="normal_height" format="dimension" />
<attr name="expanded_height" format="dimension" />
<attr name="grabber" format="reference" />
<attr name="dragndrop_background" format="color" />
<attr name="remove_mode">
<enum name="none" value="-1" />
<enum name="fling" value="0" />
<enum name="slide" value="1" />
<enum name="slideRight" value="1" />
<enum name="slideLeft" value="2" />
</attr>
</declare-styleable>
</resources>
然后我尝试在我的布局文件中使用它们,如下所示:
<app.monodroid.TouchListView xmlns:tlv="http://schemas.android.com/apk/res/app.monodroid"
android:id="@+id/lstExercises"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/lExerciseActions"
android:drawSelectorOnTop="false"
tlv:normal_height="64dip"
tlv:grabber="@+id/icon"
tlv:remove_mode="slideRight"
/>
但是当我尝试构建项目时,我收到以下错误消息:
/Library/Frameworks/Mono.framework/External/xbuild/Novell/Novell.MonoDroid.Common.targets:错误:工具退出代码:1。输出:/Users/path_to_project/App.MonoDroid/obj/Debug/ res / layout / add_session.axml:1:错误:在'com.app.monodroid'包中找不到属性'normal_height'的资源标识符 /Users/path_to_project/App.MonoDroid/obj/Debug/res/layout/add_session.axml:1:错误:找不到包'com.app.monodroid'中属性'grabber'的资源标识符 /Users/path_to_project/App.MonoDroid/obj/Debug/res/layout/add_session.axml:1:错误:在'com.app.monodroid'包中找不到属性'remove_mode'的资源标识符 (App.MonoDroid)
我的项目名称是App.MonoDroid。
如何在布局文件中使用这些属性?
答案 0 :(得分:3)
如果您为应用声明了包名,这些错误就会消失。在项目属性中,转到Android Manifest选项卡,您将看到Package Name的文本字段:
答案 1 :(得分:0)
...然后确保将此包名称用于程序集和命名空间:
并在xml文件中使用它:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res/**app.monodroid**"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<**app.monodroid**.FICalendarView
android:id="@+id/FICalendar"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
custom:dayStyle="1">
</**app.monodroid**.FICalendarView>
<Button
android:id="@+id/MyButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/Hello"/>
</LinearLayout>
其中FICaldendarView是一个自定义视图,定义为:
namespace app.monodroid
{
public class FICalendarView : View
{
//private FICalenderView() {}
public FICalendarView(Context context)
: base(context)
{
}
public FICalendarView(Context context, Android.Util.IAttributeSet attribute)
: base(context, attribute)
{
Android.Content.Res.TypedArray a = context.Theme.ObtainStyledAttributes(attribute, Resource.Styleable.FICalendarView, 0, 0);
//Android.Util.TypedValue typedValue = null;
int dayStyle = a.GetInteger(Resource.Styleable.FICalendarView_dayStyle,0);
}
public FICalendarView(Context context, Android.Util.IAttributeSet attribute, int x)
: base(context, attribute,x)
{
}
}
}