webentwicklung-frage-antwort-db.com.de

Erstellen Sie programmgesteuert ein neues TextView und zeigen Sie es unter einem anderen TextView an

String[] textArray={"one","two","asdasasdf asdf dsdaa"};
int length=textArray.length;
RelativeLayout layout = new RelativeLayout(this);
RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
for(int i=0;i<length;i++){
    TextView tv=new TextView(getApplicationContext());
    tv.setText(textArray[i]);
    relativeParams.addRule(RelativeLayout.BELOW, tv.getId());
    layout.addView(tv, relativeParams);
}

Ich muss so etwas tun .. damit es als angezeigt wird

one
two
asdfasdfsomething

auf dem Bildschirm..

46
Lope Emano

Wenn es nicht wichtig ist, ein RelativeLayout zu verwenden, können Sie ein LinearLayout verwenden und dies tun:

LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);

Auf diese Weise können Sie die von Ihnen ausgeführte Methode addRule umgehen. Sie können einfach addView () verwenden, um neue TextViews hinzuzufügen.

Vollständiger Code:

String[] textArray = {"One", "Two", "Three", "Four"};
LinearLayout linearLayout = new LinearLayout(this);
setContentView(linearLayout);
linearLayout.setOrientation(LinearLayout.VERTICAL);        
for( int i = 0; i < textArray.length; i++ )
{
    TextView textView = new TextView(this);
    textView.setText(textArray[i]);
    linearLayout.addView(textView);
}
68
WeNeigh

Versuchen Sie diesen Code:

final String[] str = {"one","two","three","asdfgf"};
final RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl);
final TextView[] tv = new TextView[10];

for (int i=0; i<str.length; i++)
{
    tv[i] = new TextView(this); 
    RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams
         ((int)LayoutParams.WRAP_CONTENT,(int)LayoutParams.WRAP_CONTENT);
    params.leftMargin = 50;
    params.topMargin  = i*50;
    tv[i].setText(str[i]);
    tv[i].setTextSize((float) 20);
    tv[i].setPadding(20, 50, 20, 50);
    tv[i].setLayoutParams(params);
    rl.addView(tv[i]);  
}
20
Balaji
public View recentView;

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Create a relative layout and add a button
        relativeLayout = new RelativeLayout(this);
        btn = new Button(this);
        btn.setId((int)System.currentTimeMillis());
        recentView = btn;
        btn.setText("Click me");
        relativeLayout.addView(btn);


        setContentView(relativeLayout);

        btn.setOnClickListener(new View.OnClickListener() {

            @Overr ide
            public void onClick(View view) {

                //Create a textView, set a random ID and position it below the most recently added view
                textView = new TextView(ActivityName.this);
                textView.setId((int)System.currentTimeMillis());
                layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                layoutParams.addRule(RelativeLayout.BELOW, recentView.getId());
                textView.setText("Time: "+System.currentTimeMillis());
                relativeLayout.addView(textView, layoutParams);
                recentView = textView;
            }
        });
    }

Dies kann geändert werden, um jedes Element eines String-Arrays in verschiedenen TextViews anzuzeigen.

17
WeNeigh

Sie weisen der Textansicht keine ID zu, übergeben sie jedoch mit tv.getId() als Parameter an die Methode addRule. Versuchen Sie, eine eindeutige ID über tv.setId(int) festzulegen.

Sie können auch das LinearLayout mit vertikaler Ausrichtung verwenden, was möglicherweise einfacher ist. Ich bevorzuge LinearLayout gegenüber RelativeLayouts, wenn nicht anders erforderlich.

3
Mathias Conradt