Ich habe eine ziemlich grundlegende Idee und Erfahrung mit der Erstellung von benutzerdefinierten Android-Steuerelemente.Benutzerdefinierte Android-Steuerelemente mit Elementen
Ich weiß, dass ich ein benutzerdefiniertes Steuerelement erstellen kann, das im Grunde ein Layout mit einer Reihe von Steuerelementen darin ist, Attribute hinzufügen und jede Art von Logik, die ich möchte.
Aber jetzt brauche ich etwas anderes. Ich habe eine App, in der alle meine EditText
Elemente eine graue horizontale Linie unter ihnen haben. Ich weiß, dass dies mit backgroundTint
erreicht werden kann, aber dies ist nur für api 21 und mehr.
Anstatt diese graue Linie unter jedem EditText
Element, das ich verwende, hinzuzufügen, möchte ich ein benutzerdefiniertes Element erstellen, das EditText
erweitert, aber auch diese graue Linie hat. Etwas wie folgt aus:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:layout_width="match_parent"
android:layout_height="1dp"
android:src="@drawable/gray_divider"/>
</LinearLayout>
Und in der Code-behind:
public class MyEditText extends LinearLayout {
public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
Init();
}
private void Init() {
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.my_edit_text, this);
InitViews(view);
}
Also mein Problem ist folgendes: Damit MyEditText
funktionieren wie ein EditText
Ich habe ein Attribut für jedes EditText
Attribut erstellen . Ich möchte dies tun:
<MyEditText android:layout_width="match_parent"
android:layout_height="match_parent"
android:text_color="@android:color/white" />
Ohne etwas in den Code hinter hinzuzufügen. Ist das möglich?
Funktioniert wie Charme! Sehr elegant auch. Änderte den Code ein bisschen. '