Ich habe eine benutzerdefinierte TextView und ich möchte im Konstruktor herausfinden, ob eine bestimmte XML-Eigenschaft im entsprechenden XML-Layout deklariert wurde oder nicht.Wie kann man wissen, ob eine XML-Eigenschaft definiert wurde?
<com.stuff.CustomTextView
android:id="@+id/tv01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="8sp" />
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// find out if textSize was defined
if (!wasAttributeDefined(attrs,"textSize")) // EDIT
setTextSize(10); // EDIT
}
Ich weiß nicht, ob dies gültig ist, aber ich habe versucht, den folgenden (ohne Glück):
attrs.getAttributeFloatValue("android","textSize",(float)-1.0);
Dank.
EDIT:
gut, wenn jemand interessiert ist, gibt es einen (wahrscheinlich nicht so gut) Weg, dies zu lösen. someting wie:
private boolean wasAttributeDefined(AttributeSet attrs, String name) {
for (int i=0; i<attrs.getAttributeCount(); i++)
if (attrs.getAttributeName(i).equals(name))
return true;
return false;
}
Haben Sie Ihr Log platziert? Fehler bekommen? –
keine Fehler. Ich habe nur den Standardwert (-1.0) bekommen, obwohl ich in der XML-Datei android: textSize definiert habe. – takecare