Ich habe das Gefühl, dass ich früher wusste, wie man das macht, aber ich zeichne gerade eine Lücke. Ich habe eine Klasse, die sich von View (Card
) erstreckt und ich habe ein Layout dafür in XML geschrieben. Was ich tun möchte, ist die Ansicht von Card
als die XML-Ansicht im Konstruktor zu setzen, so dass ich die Methoden in Card
verwenden kann, um TextView
s und whatnot zu setzen. Irgendwelche Vorschläge? Code unten:Verwenden Sie XML-Layout als Ansicht für View Subclass?
Card.java. (Ich habe View.inflate(context, R.layout.card_layout, null);
es als ein Beispiel das, was ich tun will, aber es funktioniert nicht Ich will im Grunde die Klasse die Schnittstelle für die Ansicht zu sein, und um das zu tun dass ich die XML-Layout Ansicht irgendwie zuordnen müssen. Muss ich etwas entlang der Linien von setContentView(View view)
verwenden? es gibt keine solche Methode in der View
Klasse, aber gibt es so etwas wie das?)
public class Card extends View {
TextView tv;
public Card(Context context) {
super(context);
View.inflate(context, R.layout.card_layout, null);
tv = (TextView) findViewById(R.id.tv);
}
public Card(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
View.inflate(context, R.layout.card_layout, null);
tv = (TextView) findViewById(R.id.tv);
}
public Card(Context context, AttributeSet attrs) {
super(context, attrs);
View.inflate(context, R.layout.card_layout, null);
tv = (TextView) findViewById(R.id.tv);
}
public void setText(String text) {
tv.setText(text);
}
}
card_layout. xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="336dp"
android:layout_height="280dp"
android:layout_gravity="center"
android:background="@drawable/card_bg"
android:orientation="vertical" >
<TextView
android:id="@+id/tv"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:textSize="24dp"
/>
</LinearLayout>
Ich dachte darüber nach, meine Klasse "LinearLayout" erweitern zu lassen und dachte dann, es wäre eine dumme Idee.Ich habe es versucht, nachdem ich diesen Kommentar gesehen habe und es hat perfekt funktioniert! Vielen Dank! – roboguy12