ho qualche "carta", che è un semplice LinearLayout con un TextView all'internoCome estendere correttamente LinearLayout per creare una visualizzazione personalizzata
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/card_label_txt"
android:layout_width="wrap_content"
android:text="label" />
</LinearLayout>
poi ho il mio principale Frammento con un LinearLayout verticale .. e in questo frammento principale per cui ho aggiungere questo "carte" per il layout principale:
# main fragment layout
View view = inflater.inflate(R.layout.main_activity, null);
LinearLayout ll = (LinearLayout) view
.findViewById(R.id.main_activity_ll);
# get card
View card = inflater.inflate(R.layout.card, null);
# add to fragment layout
ll.addView(card);
questo funziona molto bene e la mia carta riempie tutta la larghezza del layout di frammento. In realtà quello che mi aspetto.
Ora ho creato una classe separata per la mia carta:
Class Card extends LinearLayout{
public Card(Context context) {
super(context);
View view = LayoutInflater.from(getContext()).inflate(
R.layout.card, null);
this.addView(view);
}
}
E, se poi aggiungo la mia carta al layout frammento principale nel modo:
# main fragment layout
View view = inflater.inflate(R.layout.main_activity, null);
LinearLayout ll = (LinearLayout) view
.findViewById(R.id.main_activity_ll);
# add new Card to fragment layout
ll.addView(new Card(getActivity());
allora viene aggiunto MA la larghezza della carta non è più piena, ma avvolta nella vista testo.
Qualcuno potrebbe spiegarmi perché ottengo diverse larghezze con questo metodo di aggiungere gli stessi layout?
Soluzione classe qui è cambiato scheda che risolve questo problema:
public Card(Context context) {
super(context);
LayoutInflater.from(getContext()).inflate(
R.layout.card, this);
}
}
Sei sicuro che il vostro 'Card' cambiato la larghezza e non' LinearLayout'? – eleven
si. Ho semplificato la domanda per una migliore comprensione, poiché sto lavorando con cose più complesse. Ma il fatto è che aggiungendo la "carta" direttamente al layout e tramite una nuova classe, si ottengono risultati diversi. Presumo che aggiungendo tramite la nuova classe la larghezza del layout genitore non possa essere verificata in qualche modo. – user1908375