Inflatable TextView et LinearLayout par programme

Le problème ici, je n'obtiens pas la même vue de sortie dans ces deux cas, je veux réparer le cas 1 pour obtenir le même résultat que le cas 2:

  1. Inflatez la visualisation de texte et la diffusion linéaire, puis ajoutez la visualisation de texte à linearlayout par programme.
  2. Ajoutez la vue de texte à linearlayout dans xml.

Code et sortie pour le cas 1:

  • Création d'une fonction "favorite" sur une liste de questions qui sont randomisées
  • Comprendre Traceview
  • Onglets de conception de matériel Android 5.0
  • Android Studio: "Execution failed for task": application: mergeDebugResources '"si le projet est créé sur le lecteur C:
  • RecyclerView avec GridLayoutManager essayant de résoudre wrap_content
  • Comment trouver le document gradle lintOptions pour Android?
  • Main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> </LinearLayout> 

    Text_view.xml

     <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:textColor="#000000" android:text="1" android:textSize="20sp" android:background="#AAAAAA" android:gravity="center" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginTop="2dp" android:layout_marginRight="2dp" /> 

    Méthode OnCreate dans LayoutTestActivity.java

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout lt = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null); TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, null); lt.addView(tv); setContentView(lt); } 

    Vue de sortie (pas correcte)

    Entrez la description de l'image ici

    Code et sortie pour le cas 2:

    Main.xml

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:textColor="#000000" android:text="1" android:textSize="20sp" android:background="#AAAAAA" android:gravity="center" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginTop="2dp" android:layout_marginRight="2dp" /> </LinearLayout> 

    Méthode OnCreate dans LayoutTestActivity.java

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } 

    Vue de sortie (Correct)

    Entrez la description de l'image ici

    3 Solutions collect form web for “Inflatable TextView et LinearLayout par programme”

    Je ne sais pas si cela fait des différences, mais ma suggestion est la suivante:

    Fournissez l' android:id="@+id/linearLayout" -tag pour LinearLayout dans votre main.xml .

    Ensuite, procédez comme suit:

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); LinearLayout lt = (LinearLayout) findViewById( R.id.linearLayout ); TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, null); lt.addView(tv); } 

    Vous voudrez peut-être également tester s'il existe une différence entre la fourniture null ou votre LinearLayout lt comme deuxième paramètre lors de l' TextView du TextView par exemple:

     TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, lt); 

    Vous devez configurer LayoutParams dans le premier cas. Dans la seconde, cela se fait automatiquement puisque TextView se trouve dans le xml. J'espère que cela t'aides!

    Je pense en premier lieu que vous devez définir la disposition principale dans la méthode setContentView () directement et ensuite faire le gonflage.

     setContentView(R.layout.main); LinearLayout mainLayout = (Linearlayout) findViewbyId(R.id.mainLayoutId); TextView tv = (TextView) getLayoutInflater().inflate(R.layout.text_view, mainLayout, false); mainLayout.addView(tv); 

    Je pense que cela devrait fonctionner. Pour conserver les paramètres de mise en page xml, vous devez passer les deux derniers paramètres à la méthode infate ().

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.