So fügen Sie eine TextView zu LinearLayout in Android hinzu

Lesezeit: 5 Minuten

So fugen Sie eine TextView zu LinearLayout in Android hinzu
Martin

Ich versuche hinzuzufügen TextViews zu meinem XML-definierten Layout im Code. Ich habe ein XML-Blatt, wo viele Views sind festgelegt. Aber ich muss einige Views im Code hinzufügen, also a create a LinearLayout im xml-sheet:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:id="@+id/info"
android:layout_height="wrap_content" 
android:orientation="vertical">
</LinearLayout>

Und in diesem Layout füge ich gerne meine hinzu TextView:

    View linearLayout =  findViewById(R.id.info);
    //LinearLayout layout = (LinearLayout) findViewById(R.id.info);


    TextView valueTV = new TextView(this);
    valueTV.setText("hallo hallo");
    valueTV.setId(5);
    valueTV.setLayoutParams(new LayoutParams(
            LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));

    ((LinearLayout) linearLayout).addView(valueTV);

Aber ich bekomme nur folgende Fehlermeldung:

: java.lang.ClassCastException: android.widget.TextView

Wie kann ich es tun?

Danke für deine Hilfe. Martin

  • Für welche Zeile gilt diese Ausnahme? Es muss aus der LinearLayout-Umwandlung stammen. Sind Sie sicher, dass die LinearLayout-Variable ein LinearLayout und keine TextView ist? Außerdem sollten Sie die ID nicht angeben, da Sie nicht garantieren können, dass sie eindeutig ist.

    – Robby Pond

    8. Juli 10 um 15:06 Uhr

  • Sie haben Recht, linearLayout ist ein TextView, aber warum? Ich habe es in der XML-Datei als LinearLayout definiert …

    – Martin

    8. Juli 10 um 15:14 Uhr

  • Stellen Sie sicher, dass Sie wirklich mit der oben gezeigten XML-Datei arbeiten. Ist setContentView(R.layout.your_xml_layout); wirklich das richtige xml laden? Haben Sie andere XML-Layouts, in denen Sie verwenden android:id="@+id/info" was ist zufällig ein TextView?

    – Rodja

    1. Dezember 11 um 10:47 Uhr


  • Ist dieses Problem gelöst? Bitte als Antwort annehmen oder posten.

    – Talha

    13. Oktober 16 um 6:46 Uhr

So fugen Sie eine TextView zu LinearLayout in Android hinzu
Ben

versuchen Sie es mit

LinearLayout linearLayout = (LinearLayout)findViewById(R.id.info);
...
linearLayout.addView(valueTV);

Stellen Sie außerdem sicher, dass die von Ihnen erstellten Layoutparameter LinearLayout.LayoutParams sind …

  • Es gibt wieder eine Ausnahme, weil findViewById eine TextView zurückgibt. Aber wieso? Ich hole es mit der LinearLayout-ID … was meinst du mit: Stellen Sie außerdem sicher, dass die von Ihnen erstellten Layout-Parameter LinearLayout.LayoutParams sind …

    – Martin

    8. Juli 10 um 15:59 Uhr

  • Warum sollte das etwas ändern? Alles, was es tut, ist eher früher als später zu wirken, was den gleichen Effekt haben sollte.

    – Yesennes

    19. Mai ’16 um 13:06 Uhr

1643914027 389 So fugen Sie eine TextView zu LinearLayout in Android hinzu
Pushpendra Kuntal

Hey, ich habe deinen Code überprüft, es gibt keinen schwerwiegenden Fehler in deinem Code. Dies ist der vollständige Code:

main.xml:-

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

das ist Stackoverflow.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;

public class Stackoverflow extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        View linearLayout =  findViewById(R.id.info);
        //LinearLayout layout = (LinearLayout) findViewById(R.id.info);

        TextView valueTV = new TextView(this);
        valueTV.setText("hallo hallo");
        valueTV.setId(5);
        valueTV.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));

        ((LinearLayout) linearLayout).addView(valueTV);
    }
}

Kopieren Sie diesen Code und führen Sie ihn aus. es ist völlig fehlerfrei. Pass auf…

  • Was wäre, wenn ich die folgende TextView haben wollte: <TextView android:id="@+id/tvDInfo3" android:layout_width="0dp" android:layout_height="wrap_content" android:textStyle="bold" android:text="Release Date" android:gravity="center" android:padding="@dimen/dyk_text_pad" android:textColor="#000000" android:textSize="@dimen/info_text_size" android:layout_weight="1" />

    – Si8

    18. Oktober 13 um 17:41 Uhr

  • +1. Diese Antwort ist viel besser als die von @Ben, da sie ein Beispiel für LayoutParams enthält und wie die restlichen Eigenschaften der TextView wird initialisiert. Dies sollte als Antwort markiert werden.

    – Subby

    30. Juni 14 um 9:31 Uhr


1643914027 294 So fugen Sie eine TextView zu LinearLayout in Android hinzu
vaibhav jain

for(int j=0;j<30;j++) {
    LinearLayout childLayout = new LinearLayout(MainActivity.this);
    LinearLayout.LayoutParams linearParams = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT);
    childLayout.setLayoutParams(linearParams);

    TextView mType = new TextView(MainActivity.this);
    TextView mValue = new TextView(MainActivity.this);

    mType.setLayoutParams(new TableLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT, 1f));
    mValue.setLayoutParams(new TableLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT, 1f));

    mType.setTextSize(17);
    mType.setPadding(5, 3, 0, 3);
    mType.setTypeface(Typeface.DEFAULT_BOLD);
    mType.setGravity(Gravity.LEFT | Gravity.CENTER);

    mValue.setTextSize(16);
    mValue.setPadding(5, 3, 0, 3);
    mValue.setTypeface(null, Typeface.ITALIC);
    mValue.setGravity(Gravity.LEFT | Gravity.CENTER);

    mType.setText("111");
    mValue.setText("111");

    childLayout.addView(mValue, 0);
    childLayout.addView(mType, 0);

    linear.addView(childLayout);
}

  • muss zunächst linear.addView(childLayout);, linear als Linear Layout definieren

    – Noor Hossain

    12. November 20 um 13:37 Uhr

1643914027 499 So fugen Sie eine TextView zu LinearLayout in Android hinzu
Deepak

Sie können eine hinzufügen TextView zu Ihrem linearen Layout programmgesteuert wie folgt:

LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mylayout);
TextView txt1 = new TextView(MyClass.this);
linearLayout.setBackgroundColor(Color.TRANSPARENT);
linearLayout.addView(txt1);

Sie sollten etwas Ähnliches verwenden, um TextView dynamisch zu LinearLayout hinzuzufügen:

LinearLayout linearLayout = getActivity().findViewById(R.id.infoLayout);

TextView valueTV = new TextView(context);
valueTV.setText("hallo hallo");
valueTV.setId(Integer.parseInt("5"));
valueTV.setLayoutParams(new LinearLayout.LayoutParams(
       LinearLayout.LayoutParams.FILL_PARENT,
       LinearLayout.LayoutParams.WRAP_CONTENT));

linearLayout.addView(valueTV);

getActivity() wird für interne Fragmente verwendet, Sie können Kontext oder ähnliches für jede Instanz verwenden, in der Sie sich befinden.

In Kotlin Sie können Textview wie folgt hinzufügen.

 val textView = TextView(activity).apply {
            layoutParams = LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
            ).apply {
                setMargins(0, 20, 0, 0)
                setPadding(10, 10, 0, 10)
            }
            text = "SOME TEXT"
            setBackgroundColor(ContextCompat.getColor(this@MainActivity, R.color.colorPrimary))
            setTextColor(ContextCompat.getColor(this@MainActivity, R.color.colorPrimaryDark))
            textSize = 16.0f
            typeface = Typeface.defaultFromStyle(Typeface.BOLD)
        }
 linearLayoutContainer.addView(textView)

1643914028 789 So fugen Sie eine TextView zu LinearLayout in Android hinzu
Pinguin359

Sie müssen auf das Layout über seine Layout-Ressource zugreifen, nicht über eine ID-Ressource, die nicht garantiert eindeutig ist. Die Ressourcenreferenz sollte wie folgt aussehen: R.layout.my_cool_layout, wobei Ihr obiges XML-Layout in res/layout/my_cool_layout.xml gespeichert ist.

.

758830cookie-checkSo fügen Sie eine TextView zu LinearLayout in Android hinzu

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy