【问题标题】:Adding multiple TextViews into LinearLayout programmatically以编程方式将多个 TextView 添加到 LinearLayout
【发布时间】:2014-03-26 14:27:20
【问题描述】:

有很长的字符串。我将长字符串分成单词并为每个单词设置 TextView。 (你可以问我为什么需要这个功能?当用户点击 textview(word) 时,应用程序会显示单词的含义)

...
    TextView tv = new TextView(this);
                tv.setTextSize(24);
                tv.setText(word);
                ll.addView(tv);
...

我的线性布局:

<LinearLayout
        android:id="@+id/llReader"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:orientation="vertical" >
    </LinearLayout>

如果我将 LinearLayout 的方向垂直放置,它会将每个 TextView 放在新行中。 例如:

单词1

二字

单词3

如果我把它放在水平方向,它只是把所有的词放在一行:

单词 1,单词 2,单词 3

结果word4、word5、word6不可见。

如何以这种方式以编程方式添加TextViews?

【问题讨论】:

    标签: android android-layout android-linearlayout textview


    【解决方案1】:

    您应该在 Vertical LinearLayout 中添加 Horizo​​ntal LinearLayout

    <LinearLayout
        android:id="@+id/verticalLinear"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <LinearLayout
            android:id="@+id/horizontalLinear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView" />
            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView" />
        </LinearLayout>
    </LinearLayout>
    

    【讨论】:

      【解决方案2】:

      在你的活动中,

      private LinearLayout mReaderLayout;
      
      protected void onCreate(Bundle savedInstanceState) {
          mReaderLayout = (LinearLayout) findViewById(R.layout.llReader);
      }
      
      private void addText(String text) {
          TextView textView = new TextView(this);
          textView.setText(text);
          mReaderLayout.addView(textView);
      }
      

      【讨论】:

      • 首先感谢您的回答。但我问如何以图片所示的方式将textviews添加到linearlayout中:TextViews的段落
      【解决方案3】:

      您可以将 gridview 与适配器一起使用。

        <GridView
                          android:id="@+id/gridview1"
                          android:layout_width="fill_parent"
                          android:layout_height="fill_parent"
                          android:columnWidth="50dp"
                          android:gravity="center"
                          android:numColumns="auto_fit"
                          android:stretchMode="columnWidth" >
      
                      </GridView>
      

      onCreate:

          String[] strings= "Long string".split(" ");
             gridView = (GridView) findViewById(R.id.gridview1);  
      
                    // Create adapter to set value for grid view
                      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                              android.R.layout.simple_list_item_1, strings);
      
                      gridView.setAdapter(adapter);
      
                      gridView.setOnItemClickListener(new OnItemClickListener() {
      
                          @Override
                          public void onItemClick(AdapterView<?> parent, View v,
                              int position, long id) {
      
                             Toast.makeText(getApplicationContext(),
                              ((TextView) v).getText()  , Toast.LENGTH_SHORT).show();
      
                          }
                      });
      

      【讨论】:

        【解决方案4】:

        您可以立即添加使用 RelativeLayout,也可以在线性垂直布局中添加两个按钮,然后将其添加到水平布局中。然后将下一个带有其他两个按钮的垂直线性布局添加到水平布局中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多