2011-07-05 28 views
10

私は私のプロジェクトのコメント部分に動的なレイアウトを使用していますが、動的にtextviewのsettextを実行すると、出力は画面の上にしか表示されません。そして、出力を他の出力に渡します。相対的なレイアウトの動的TextView

RelativeLayout ll=(RelativeLayout) findViewById(R.id.rl); 
     for(int i = 0; i < 20; i++) { 
     TextView cb = new TextView(this); 
     cb.setText("YORUMLAR"+yorum[0]+i); 

     cb.setTextSize(30); 
      ll.addView(cb); 

     } 

どのように出力を画面の一番下にリニアに置くことができますか?

+1

... textViewsに適切な相対属性を設定します。今のところ、テキストを設定するだけで、位置はなく、デフォルトは画面の上に表示されます。 – Adinia

答えて

21

LinearLayoutを使用して、自動的にTextViewを追加する必要があります。あなたはRelativeLayoutなしでは生きられないと仮定すると、


、あなたは動的にあなたが別の下にあるビューを置くために作成したすべてのTextViewのIDを生成する必要があります。次に例を示します。

public class HelloWorld extends Activity 
{  
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    {  
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity); 

     RelativeLayout layout = (RelativeLayout)findViewById(R.id.layout); 

     Random rnd = new Random(); 
     int prevTextViewId = 0;  
     for(int i = 0; i < 10; i++) 
     {      
      final TextView textView = new TextView(this); 
      textView.setText("Text "+i);  
      textView.setTextColor(rnd.nextInt() | 0xff000000);    

      int curTextViewId = prevTextViewId + 1; 
      textView.setId(curTextViewId); 
      final RelativeLayout.LayoutParams params = 
       new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 
               RelativeLayout.LayoutParams.WRAP_CONTENT); 

      params.addRule(RelativeLayout.BELOW, prevTextViewId); 
      textView.setLayoutParams(params); 

      prevTextViewId = curTextViewId; 
      layout.addView(textView, params); 
     }    
    }  
} 

enter image description here

+0

ありがとうございます!ヌル値を持つことができるカーソルがあります。人々は空白を見るのが嫌いだったので、「nullでないならdo this」ステートメントを使ってダイナミックなテキストビューを作成し、そのサンプルを使用して、表示する必要のあるそれぞれのテキストビューIDを作成しました。 curTextViewId = prevTextViewID + 1を各if文に設定し、それぞれの最後にprevTextViewId = curTextViewIdを設定して、次のif文が新しいprevTextViewIdを取得するようにしてください。 ありがとう! – Opy

2

あなたが新しく追加されたビューの場所を提供することしました。 @Adiniaは、ポジションがなければ、デフォルトでトップに揃えられると言った。したがって、次のコードを使用してRelativeLayoutでそれを行うことができます。

RelativeLayout containerLayout = (RelativeLayout) findViewById(R.id.container); 

for (int i = 0; i < 20; i++) { 

    TextView dynaText = new TextView(this); 

    dynaText.setText("Some text " + i); 
    dynaText.setTextSize(30); 

    // Set the location of your textView. 
    dynaText.setPadding(0, (i * 30), 0, 0); 

    containerLayout.addView(dynaText); 
} 

複数のテキストビューを順番に表示する場合は、LinearLayoutを使用する必要があります。

1

ダイナミックテキストビューを相対レイアウトに追加することもできます。ここで私はあなたに役立つかもしれないいくつかのコードを添付しています。

RelativeLayout ll=(RelativeLayout) findViewById(R.id.rl); 
    for(int i = 0; i < 20; i++) 
    { 
     TextView cb = new TextView(this); 
     cb.setText("YORUMLAR"+yorum[0]+i); 
     cb.setTextSize(30); 
     cb.setId(2000+i); 
     RelativeLayout.LayoutParams TextViewLayoutParams = new RelativeLayout.LayoutParams(100,100); 
     if (i != 0)DispViewLayoutParams.addRule(RelativeLayout.BELOW, 2000 - (i-1)); 
     ll.addView(cb,TextViewLayoutParams); 
    } 
関連する問題