monodroid / xamarin自定义属性使用ObtainStyledAttributes为空

尝试将父布局的自定义属性传递给子布局。

从ObtainStyledAttributes()返回的TypedArray似乎没有我创build的自定义属性的相应的自定义值,尽pipe我可以将它们的ID映射到Resource.designer中的值。


Attr.xml:

<resources> <declare-styleable name="HeaderView"> <attr name="bgcolor" format="color" /> <attr name="testing" format="string" /> </declare-styleable> 

Main.xaml:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <views.HeaderView android:id="@+id/hdrWatchList" android:layout_width="fill_parent" android:layout_height="20.0dp" custom:bgcolor="@color/blue" custom:testing="testing text buddy" /> 

查看课程:

  public HeaderView (Context context, IAttributeSet attrs) : base (context, attrs) { int[] styleAttrs = Resource.Styleable.HeaderView; TypedArray a = context.ObtainStyledAttributes(attrs, styleAttrs); string sid = a.GetString(Resource.Styleable.HeaderView_testing); int id = a.GetColor(Resource.Styleable.HeaderView_bgcolor, 555); Log.Info( "testing", "resource sid : " + sid); // RETURNS '' Log.Info( "testing", "resource id : " + id); // RETURNS DEF 555 

  • 需要一个带有Monodroid的sqlite的例子
  • 电话进入睡眠状态后,保持wifi在前台服务中处于活动状
  • 如何在Xamarin.Android中注册我自己的Application子类?
  • 如何在VS 2015中将android xamarin项目部署到Xamarin Android Player
  • ActionBarSherlock for Mono for Android的jar-Binding
  • Xamarin项目中的混淆
  • 为SqlCipher数据库存储encryption密钥的正确方法
  • 需要一个与Monodroid的SQLite的例子
  • 我认为问题在于你如何指定你的xmlns:custom命名空间。 您需要添加您的应用程序名称空间在string的末尾,您已经有这样的:

     xmlns:custom="http://schemas.android.com/apk/res/my.awesome.namespace" 

    您还需要为您的Android项目定义一个AndroidManifest.xml ,并在其中定义了相同的名称空间。

    另外线路:

     int[] styleAttrs = Resource.Styleable.HeaderView; TypedArray a = context.ObtainStyledAttributes(attrs, styleAttrs); 

    看起来有点奇怪,我只会写:

     var a = context.ObtainStyledAttributes(attrs, Resource.Styleable.HeaderView); 

    特别是如果你以后不使用styleAttrs

    编辑:由于Android SDK rev 17,可以使用:

     xmlns:custom="http://schemas.android.com/apk/res-auto" 

    而不必写整个命名空间。