Wohin ich auch schaue, FrameLayout
scheint als FragmentContainer
verwendet werden. Warum wird FrameLayout
immer mit Fragments
gesehen?Warum wird ein FrameLayout für Fragmente verwendet?
Antwort
Sie können im Grunde verwenden RelativeLayout
oder LinearLayout
es wird immer noch funktionieren, aber die Antwort auf Ihre Frage ist in FrameLayout
‚s Dokumentation:
FrameLayout ist so konzipiert, auf dem Bildschirm einen Bereich zu blockieren, eine anzuzeigen Einzelexemplar. Im Allgemeinen sollte FrameLayout eine einzelne untergeordnete Ansicht enthalten, da es schwierig sein kann, untergeordnete Ansichten in einer Weise zu organisieren, die auf verschiedene Bildschirmgrößen skalierbar ist, ohne dass sich die untergeordneten Elemente gegenseitig überlappen. Sie können jedoch mehrere untergeordnete Elemente zu einem FrameLayout hinzufügen und ihre Position innerhalb des FrameLayouts mithilfe von mit der Zuweisung der Schwerkraft zu jedem untergeordneten Element steuern, indem Sie das Attribut android: layout_gravity verwenden.
Sie können mehr über FrameLayout
hier lesen: FrameLayout/Android Developers
Hauptzweck der Rahmenplan ist die Fläche blockieren erforderlich, um das größte Kind Blick passen. Wenn Sie ein Rahmenlayout als Fragmentcontainer verwenden, können Sie sicherstellen, dass immer der verfügbare Platz für das größte Fragmentlayout zur Verfügung steht.
In einigen Fällen müssen Sie möglicherweise mehr als 1 Fragment gleichzeitig auf dem Bildschirm haben. In diesem Fall sollten Sie relatives oder lineares Layout bevorzugen.
Alles basiert auf Benutzeranforderungen und Anpassung benötigt.
Es ist nicht notwendig, FrameLayout überhaupt zu verwenden.
Zum Beispiel in unten Code wird kein Layout genommen, und Fragment selbst enthält nur einzelne Bildansicht.
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");
}
}