2012-01-21 9 views
2

私はここでのDragnDropリストビューをAndroid用モノラルでC#に変換しようとしています。MonoDroidレイアウトaxmlファイル内でカスタム属性を使用する方法は?

<?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> 

が、私はその後、私のレイアウトファイル内でそれらを使用しよう:

このカスタムビューの一部は、ファイルリソース/値/ attrs.xml内で、次のように宣言されているいくつかのカスタム属性を使用する必要があります

<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: Error: Tool exited with code: 1. Output: /Users/path_to_project/App.MonoDroid/obj/Debug/res/layout/add_session.axml:1: error: No resource identifier found for attribute 'normal_height' in package 'com.app.monodroid' /Users/path_to_project/App.MonoDroid/obj/Debug/res/layout/add_session.axml:1: error: No resource identifier found for attribute 'grabber' in package 'com.app.monodroid' /Users/path_to_project/App.MonoDroid/obj/Debug/res/layout/add_session.axml:1: error: No resource identifier found for attribute 'remove_mode' in package 'com.app.monodroid' (App.MonoDroid)

を、このような

私のプロジェクトの名前はApp.MonoDroidです。

これらの属性はレイアウトファイル内でどのように使用できますか?

答えて

3

これらのエラーは、アプリのパッケージ名を宣言すると消えてしまいます。あなたのアセンブリおよび名前空間のために、このパッケージ名を使用していることを確認後、

Setting the package name

0

...と:プロジェクトのプロパティでは、Androidのマニフェスト]タブに移動し、あなたは、パッケージ名のテキストフィールドが表示されます:

monodroid config

と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) 
     { 

     } 
    } 
} 
と定義されたカスタムビュー
関連する問題