2016-08-03 14 views
-2

Bearbeiten: Ich liege falsch, danke @Amylinn für Ihre Hilfe.Android AddView zu LinearLayout funktioniert nicht. Was ist los mit dir?

Lektion gelernt: Vergessen Sie nicht, Ihren Code auszuführen, bevor Sie annehmen, dass etwas nicht stimmt. Ich entschuldige mich.

-

verbrachte ich die letzten 4 Stunden auf Google und Stack-Überlauf. Ich versuche, TextView zu LinearLayout über Java hinzuzufügen. Ich verstehe nicht, was mit meinem Code nicht stimmt. Ich habe einige Lösungen für Stack Overflow mit einem grünen Häkchen versucht, und trotzdem funktioniert der Code immer noch nicht. Kann mir jemand helfen?

Hier ist meine XML-Datei:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/root_of_numbers_activity" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     tools:context=".NumbersActivity"> 
</LinearLayout> 

Ich versuche haben den layout_height Wert match_parent-wrap_content zu ändern, seine Ausrichtung zu ändern, und immer noch nicht funktioniert. Hier ist der Screenshot für den Fall, wenn Sie es brauchen (Ich benutze IntelliJ IDEA, ich habe nicht auf Android Studio getestet):

Note: The Rendering Problem warning always there, even if I added the TextView directly to XML file, the code works fine and so does the preview. I wonder if this is the problem?

-

Und hier ist die Java-Datei:

package com.example.android.miwok; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

import java.util.ArrayList; 

public class NumbersActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_numbers); 

     ArrayList<String> list_words = new ArrayList<String>(); 
     list_words.add("Hello!"); 



//========CODE NUMBER 1 STARTS======== 
//  LinearLayout rootOfNumbersActivity = (LinearLayout)findViewById(R.id.root_of_numbers_activity); 
//  LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
//    LinearLayout.LayoutParams.WRAP_CONTENT, 
//    LinearLayout.LayoutParams.WRAP_CONTENT 
//  ); 
//  TextView numbersList = new TextView(this); 
//  numbersList.setLayoutParams(layoutParams); 
//  numbersList.setText(list_words.get(0)); 
// 
//  rootOfNumbersActivity.addView(numbersList); 
//========CODE NUMBER 1 ENDS======== 



//========CODE NUMBER 2 STARTS======== 
//  LinearLayout rootOfNumbersActivity = (LinearLayout)findViewById(R.id.root_of_numbers_activity); 
//  TextView numbersList = new TextView(this); 
//  numbersList.setLayoutParams(new LinearLayout.LayoutParams(
//    LinearLayout.LayoutParams.WRAP_CONTENT, 
//    LinearLayout.LayoutParams.WRAP_CONTENT)); 
//  numbersList.setText(list_words.get(0)); 
//  rootOfNumbersActivity.addView(numbersList); 
//========CODE NUMBER 2 ENDS======== 



//========CODE NUMBER 3 STARTS======== 
     ViewGroup rootOfNumbersActivity = (ViewGroup)findViewById(R.id.root_of_numbers_activity); 
     TextView numbersList = new TextView(this); 
     numbersList.setLayoutParams(new ViewGroup.LayoutParams(
       ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT)); 
     numbersList.setText(list_words.get(0)); 
     rootOfNumbersActivity.addView(numbersList); 
//========CODE NUMBER 3 ENDS======== 
    } 
} 

Hinweis: Ich habe bereits den Code in Kommentar oben versucht, funktioniert nicht.

-

Hier ist, was ich tun möchte: Ich Ansicht hinzufügen möchten, TextView zu LinearLayout, durch Java-Datei. Ich bin neu in der Android-Entwicklung, bitte, erkläre es so klar wie möglich. Wenn Sie einen anderen Hinweis brauchen, lassen Sie es mich wissen. Zuletzt, danke für deine Mühe und deine Zeit. : -)

P.S. Englisch ist meine dritte Sprache, ich entschuldige mich für grammatikalische Fehler.

+0

Haben Sie einen Fehler? – yennsarah

+0

@Amylinn keine Amylinn, gibt es keine Fehlerwarnung in XML und Java-Datei. –

+0

Haben Sie versucht, es auszuführen? Welche Ausgabe haben Sie auf Ihrem Bildschirm? – yennsarah

Antwort

0

Da alle drei Codebeispiele gut aussehen, ignorieren Sie die Warnungen, erstellen Sie das Projekt & versuchen Sie einfach, es zu starten. Programmatisch hinzugefügte Views werden in der Vorschau nicht angezeigt.

Ich würde vorschlagen, Ihr erstes oder Ihr zweites Beispiel zu verwenden, und setzen Sie Ihre LinearLayouts Höhe auf android:layout_height="match_parent".

+0

Warum 'android: layout_height =" match_parent "'? Ich lese auch jemand Problem, hier auf Stack Overflow, der Grund, warum seine Codes nicht funktionieren, weil der 'match_parent' Wert seine programmatisch hinzugefügte' TextView' drückt. –

+0

Da das 'LinearLayout' Ihr root-Layout ist, sollte es mit der Bildschirmgröße übereinstimmen. Es muss nicht, aber ich denke, das ist die am häufigsten verwendete Praxis. Wenn das 'LinearLayout' nicht das Root-Layout ist, kann es andere' Views' vom Bildschirm entfernen, wenn seine Höhe auf 'match_parent' gesetzt ist. – yennsarah

+0

Ah, ich verstehe. Kannst du mir helfen zu verstehen, was dieser Code macht? 'TextView numbersList = new TextView (this)'. Angenommen, dieser Code befindet sich auf MainActivity.java, worauf das Schlüsselwort 'this' zeigt? –