use*_*759 8 android attributes xamarin.android xamarin
尝试将自定义属性从父布局传递到子布局.
从ObtainStyledAttributes()返回的TypedArray似乎没有我创建的自定义属性的相应自定义值,尽管我可以将它们的ID映射到Resource.designer中的值.
Attr.xml:
<resources>
<declare-styleable name="HeaderView">
<attr name="bgcolor" format="color" />
<attr name="testing" format="string" />
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)
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" />
Run Code Online (Sandbox Code Playgroud)
查看课程:
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
Run Code Online (Sandbox Code Playgroud)
我认为问题在于您如何指定xmlns:custom命名空间.您需要在已经拥有的字符串末尾添加应用程序命名空间,如下所示:
xmlns:custom="http://schemas.android.com/apk/res/my.awesome.namespace"
Run Code Online (Sandbox Code Playgroud)
您还需要AndroidManifest.xml为Android项目定义一个已定义相同名称空间的项目.
线条:
int[] styleAttrs = Resource.Styleable.HeaderView;
TypedArray a = context.ObtainStyledAttributes(attrs, styleAttrs);
Run Code Online (Sandbox Code Playgroud)
看起来有点奇怪,我会写:
var a = context.ObtainStyledAttributes(attrs, Resource.Styleable.HeaderView);
Run Code Online (Sandbox Code Playgroud)
特别是如果你styleAttrs以后不使用.
编辑:自Android SDK rev 17以来,可以使用:
xmlns:custom="http://schemas.android.com/apk/res-auto"
Run Code Online (Sandbox Code Playgroud)
而不是必须编写整个命名空间.
| 归档时间: |
|
| 查看次数: |
2671 次 |
| 最近记录: |