Ovunque guardi, FrameLayout
sembra essere utilizzato come FragmentContainer
. Perché lo viene sempre visto con Fragments
?Perché FrameLayout è utilizzato per i frammenti?
risposta
si può sostanzialmente utilizzare RelativeLayout
o LinearLayout
esso continuerà a funzionare, ma la risposta della tua domanda è nella documentazione FrameLayout
s':
FrameLayout è stato progettato per bloccare un'area dello schermo per visualizzare un singolo oggetto. In genere, FrameLayout deve essere utilizzato per contenere una singola vista utente , perché può essere difficile organizzare le viste secondarie in un modo scalabile a diverse dimensioni dello schermo senza i bambini che si sovrappongono l'un l'altro. Tuttavia, puoi aggiungere più bambini a un FrameLayout e controllare la loro posizione all'interno di FrameLayout di assegnando la gravità a ciascun bambino, utilizzando l'attributo android: layout_gravity .
Potete leggere di più su FrameLayout
qui: FrameLayout/Android Developers
scopo principale di aspetto di telaio è quello di bloccare l'area necessaria per adattare la più grande vista del bambino. Se si utilizza un layout del frame come contenitore dei frammenti, è possibile assicurarsi di avere sempre lo spazio disponibile per accogliere il layout del frammento più grande.
In alcuni casi potrebbe essere necessario disporre di più di 1 frammento sullo schermo contemporaneamente in questo caso è preferibile il layout relativo o lineare.
Tutto è basato sui requisiti dell'utente e sulla personalizzazione necessaria.
Non è necessario utilizzare FrameLayout.
Ad esempio nel seguente codice non è stato eseguito alcun layout e il frammento stesso contiene solo una visualizzazione di immagini singola.
public class MyFragment extends Fragment implements OnClickListener{
String TAG="MyFragment";
Context c;
MyFragment(Context con){
c=con;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
ImageView v=new ImageView(c);
//other imageview stuff
return v;
}
@Overrides
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i(TAG, "onClcik");
}
}