动态添加视图

时间:2012-04-21 18:57:06

标签: android android-layout views

我正在使用以下布局,并希望动态地添加一个在另一个下面的文本视图(取决于我想要显示的数据)

main.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/contain"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >




    </LinearLayout>


</ScrollView>

所以我试过这个

public class Feeds extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent intent=getIntent();
        Bundle b=intent.getExtras();
      String s= b.getString("datapack");

      Log.w("String",s);
      String data[]=s.split("#");




String temp="";
      LinearLayout l=(LinearLayout)findViewById(R.id.contain);
      LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
              (LayoutParams.WRAP_CONTENT), (LayoutParams.WRAP_CONTENT));

      RelativeLayout relative = new RelativeLayout(getApplicationContext());
      relative.setLayoutParams(lp);


      for(int i=1;i<data.length;i++)
      {Log.w("i data",data[i]);
          temp=temp  + data[i] + ",";
          Log.w("tag",temp);
          if(i%5==0)
          {Log.w("data",temp);
              TextView tv = new TextView(getApplicationContext());
              tv.setLayoutParams(lp);
              tv.setId(i);
              tv.setText(temp);
              relative.addView(tv, lp);
              temp=null;

          }

      }
      l.addView(relative);




    }
}

我是第一次使用Scrollview,因为这有点问题,但主要问题是相对布局中的textviews相互重叠。我如何指定每个视图之间的差距?

Overlapping

2 个答案:

答案 0 :(得分:2)

如果要将视图添加到RelativeLayout中,则必须设置视图的放置位置,而不是LinearLayout,只需要在其中添加视图。

尝试更改为

LinearLayout layout= new LinearLayout (getApplicationContext());
  layout.setLayoutParams(lp);

在这里你有点小提示。不要这样做

if(i%5==0)
{Log.w("data",temp);

尝试这样做

if(i%5==0){
   Log.w("data",temp);

最好阅读和理解

答案 1 :(得分:1)

我没有看到你在哪里定义每个textview的位置,即layout_below,layout_toLeftOf ......如果没有定义位置,相对布局会堆叠左上角的每个视图。

<强>加成

似乎是digulino,我同意。我想补充一点,你应该能够在ScrollView中只使用RelativeLayout获得你想要的布局方案,如果你想要使用fling手势支持进行水平滚动,也可以使用Horizo​​ntalScrollView。