Con GridLayout questa è una definizione di layout valida. Non c'è nessun avvertimento circa 'layout_height' attribute should be defined
o 'layout_width' attribute should be defined
Estensione di GridLayout
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView />
</GridLayout>
Sul otherhand, se estendo GridLayout il layout equivalente dà entrambe le avvertenze 'layout_height' attribute should be defined
e 'layout_width' attribute should be defined
<ExtendedGridLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView />
</ExtendedGridLayout>
questo è ciò che il GridLayout esteso sembra
package com.github.extendedgridlayout;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.widget.GridLayout;
@SuppressWarnings("unused")
public class ExtendedGridLayout extends GridLayout {
public ExtendedGridLayout(Context context){
super(context);
}
public ExtendedGridLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ExtendedGridLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public ExtendedGridLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
}
Ho provato a guardare attraverso lo GridLayout
fonte, e sembra che quello che hanno fatto è stato quello di estendere ViewGroup.LayoutParams e impostare una larghezza e un'altezza di default, come per PercentRelativeLayout
Così dovrebbe sembrare che in base al largo di eredità, ExtendedGridLayout dovrebbe anche impostare una larghezza predefinita e altezza per i suoi figli o fare qualunque cosa sia GridLayout per evitare il messaggio di avvertimento nell'editor di layout.
Quindi la mia domanda è: perché ExtendedGridLayout
ha l'avviso e come posso prevenirlo?
Personalmente preferisco creare la mia vista con 'LinearLayout's invece di usare' GridLayout' inutile'. –
Per cosa è lo ? Perché non vorresti dargli larghezza e altezza? –
auval
@uval gridview imposta la larghezza e l'altezza dei suoi figli. Soprattutto quando si specifica esplicitamente la colonna e il conteggio delle righe – Olumide