16

Maintenant, pour créer un fragment j'ai fait les codes suivants.Comment créer par programmation la mise en page d'un fragment?

Nom du fichier: fragment_a.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/frag_a" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

</LinearLayout> 

En Java

public class FragA extends Fragment{ 
    View view_a; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     view_a = inflater.inflate(R.layout.fragment_a, container, false); 

     return view_a; 
    } 



} 

Maintenant, je dois savoir s'il y a un moyen de créer une vue fragment sans créer un fichier XML et le code écrit en il? Ce que j'essaie de dire, c'est que je ne veux pas créer de fichier xml pour un fragment, mais plutôt que je veux créer la vue de ce fragment en utilisant du code Java.

Est-ce possible?

+0

possible mais pas souhaitable. Il est plus facile de déboguer en utilisant xml plutôt que codé en dur. – princepiero

+0

Pourquoi ne voulez-vous pas créer un fichier XML et, fondamentalement, xml et java sont des partenaires dans la criminalité lorsque vous programmez Android? – princepiero

+0

Je pensais à créer dynamiquement une vue pour un fragment de sorte que si je change un ou deux paramètres je peux l'utiliser avec un autre fragment – user2729183

Répondre

30

Oui, bien sûr que c'est possible. Il suffit de remplacer la ligne de gonflage avec, par exemple, votre CustomView.

public class FragA extends Fragment{ 

    View view_a; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     view_a = new YourCustomView(); 

     return view_a; 
    } 
} 

Ou comme ça:

public class FragA extends Fragment{ 

     View view_a; 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      view_a = new LinearLayout(getActivity()); 

      return view_a; 
     } 
    } 

Ou ajouter plus Vues:

public class FragA extends Fragment{ 

     View view_a; 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      LinearLayout ll = new LinearLayout(getActivity()); 
      ll.addView(new TextView(getActivity())); 

      view_a = ll; 

      return view_a; 
     } 
    } 
Questions connexes