【问题标题】:Adding views to an activity programmatically以编程方式将视图添加到活动
【发布时间】:2011-08-09 15:21:40
【问题描述】:

我在选项卡内的 Activity 的 onCreate() 上有这段代码:

String[] info = getResources().getStringArray(R.array.fc_1);
TextView q = new TextView(this);
q.setText(info[0]);

TextView a1 = new TextView(this);
a1.setText(info[1]);

TextView a2 = new TextView(this);
a2.setText(info[2]);

TextView a3 = new TextView(this);
a3.setText(info[3]);

LinearLayout linlay = new LinearLayout(this);
linlay.addView(q);
linlay.addView(a1);
linlay.addView(a2);
linlay.addView(a3);
setContentView(linlay);

发生的情况是,只有第一个 textview 被显示,具有正确的 info[0] 值,但其他 textview 不存在。

任何想法我可能做错了什么?

【问题讨论】:

    标签: android android-layout android-tabhost


    【解决方案1】:

    LinearLayout 的默认方向是水平的。所以其他的 TextViews 在第一个的右边,占据了所有的空间。将 LinearLayout 的方向更改为垂直。

    【讨论】:

    • sazpaz 需要确保他也在设置他的 layoutparams。在 XML 中定义样式并将其应用于他正在膨胀的所有视图可能很有用,而不是以编程方式设置所有内容
    【解决方案2】:

    LinearLayout 的标准高度和宽度是 fill_parent。这使您的第一个 textView 使用隐藏其余视图的所有空间(将它们放在屏幕之外)。

    您可以将 linlay 的方向更改为垂直,或者更改不同文本视图的宽度。您需要使用LinearLayout.LayoutParams 来实现这一点。

    【讨论】:

      【解决方案3】:
      String[] info = getResources().getStringArray(R.array.fc_1);
      
      TextView q = new TextView(this);
      q.setText(info[0]);
      TextView a1 = new TextView(this);
      a1.setText(info[1]);
      
      TextView a2 = new TextView(this);
      a2.setText(info[2]);
      
      TextView a3 = new TextView(this);
      a3.setText(info[3]);
      
      LinearLayout linlay = new LinearLayout(this);
      linlay.setOrientation(1);//set vertical orientation
      linlay.addView(q);
      linlay.addView(a1);
      linlay.addView(a2);
      linlay.addView(a3);
      setContentView(linlay);
      

      试试这个代码块

      【讨论】:

        猜你喜欢
        • 2012-03-13
        • 1970-01-01
        • 2017-10-09
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-10
        相关资源
        最近更新 更多