2012-11-08 1 views
5

Ich möchte so etwas wieGibt es eine Möglichkeit zu vermeiden, den vollständigen Paketnamen in XML mit benutzerdefinierten Ansichten (Android) zu verwenden?

<TextViewPlus 
    android:id="@+id/settings_title_text" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:text="@string/settings /> 

statt

<com.my.really.super.long.package.name.that.wont.autocomplete.TextViewPlus 
    android:id="@+id/settings_title_text" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:text="@string/settings /> 

Ich denke, ich nur benutzerdefinierte Ansichten in der (Standard) Paket setzen könnte tun, aber das scheint wie eine schlechte Idee. (EDIT: Und wenn das getestet wird, funktioniert es sowieso nicht) Gibt es einen "guten" Weg, dies zu tun?

Antwort

3

Nein, AFAIK müssen Sie mit dem vollen Namen gehen.

+0

Sie waren zuerst, also wenn das wirklich die Antwort ist, werde ich es als solches markieren. :) – loeschg

+3

Die einzige Abkürzung, die Sie erhalten, ist, wenn Sie den Namespace für benutzerdefinierte Attribute verkürzen möchten, indem Sie xmlns: custom (http://developer.android.com/training/custom-views/create-view.html) verwenden) –

+0

@ Error454, danke! Ich verwende diese Technik tatsächlich für benutzerdefinierte Attribute. – loeschg

0

Mit LayoutInflater.setFactory (LayoutInflater.Factory) können Sie ein Objekt angeben, das zur Laufzeit eine benutzerdefinierte Ansichtsobjekt-Erstellung mit dem Tag-Namen ausführt. Dies könnte verwendet werden, um zu erreichen, was Sie tun möchten. Ich würde getFactory() aufrufen, um das vorhandene Factory-Standardobjekt abzurufen und dieses für alle Ansichtsnamen zu verwenden, die nicht Ihre benutzerdefinierten Ansichten sind.

Verwandte Themen