Los atributos personalizados de monodroid / xamarin están vacíos usando ObtainStyledAttributes
Tratando de pasar un atributo personalizado de un diseño padre a un diseño secundario.
El TypedArray devuelto de ObtainStyledAttributes () no parece tener los valores personalizados correspondientes para las propiedades personalizadas que he creado, aunque puedo asignar sus ID a los valores en Resource.designer.
- Uso de Android ActionBar para navegar entre las actividades
- .axml destacando y la inteligencia no funciona en monodroid
- Mono para macros de preprocesador de Android
- No se pueden analizar los datos xml a listview en xamarin android
- Manera correcta de almacenar la clave de cifrado para la base de datos SqlCipher
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" />
Ver Clase:
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
- Imagen de fondo de la actividad de Android
- Async / esperar malas prácticas bajo Android?
- Monodroid - Monodevelop limpia los datos del usuario mientras se despliega en el dispositivo
- Utilizar una base de datos local en Xamarin
- Botón de acción flotante Desplazamiento comportamiento extraño
- Appcompat-v7: 21.0.0 ': No se encontró ningún recurso que coincida con el nombre dado: attr' android: actionModeShareDrawable '
- Xamarin Android: Compartir imagen a través de la API estándar (correo electrónico, facebook, etc.)
- Circular ImageView en Xamarin
Creo que el problema reside en cómo especificó su xmlns:custom
espacio de nombres xmlns:custom
. Necesitas agregar tu espacio de nombres de aplicaciones al final de la cadena que ya tienes así:
xmlns:custom="http://schemas.android.com/apk/res/my.awesome.namespace"
También necesitas tener un AndroidManifest.xml
definido para tu proyecto de Android, donde has definido el mismo espacio de nombres.
También las líneas:
int[] styleAttrs = Resource.Styleable.HeaderView; TypedArray a = context.ObtainStyledAttributes(attrs, styleAttrs);
Mira un poco extraño para mí y me gustaría escribir:
var a = context.ObtainStyledAttributes(attrs, Resource.Styleable.HeaderView);
Especialmente si no está usando styleAttrs
más adelante.
EDIT: desde Android SDK rev 17 es posible utilizar:
xmlns:custom="http://schemas.android.com/apk/res-auto"
En lugar de tener que escribir todo el espacio de nombres.
- ¿Qué dispositivo Android debo comprar para el desarrollo de aplicaciones para Android?
- Componentes de la gravedad del acelerómetro