2012-08-17 52 views
0

我想动态地将textview添加到textView的右侧,但textView没有得到显示。Textview没有得到显示在右边另一个textView编程方式在android

声明“params2.addRule(RelativeLayout.RIGHT_OF,1);”在下面的代码是创建一个问题,如果我删除该行textview显示在随机位置。

需要实现这个XML动态

<TextView 
      android:id="@+id/stationnameVal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:text="KANYAKUMARI (CAPE)" 
      android:textColor="@color/black" 
      android:textSize="12sp" /> 

     <TextView 
      android:id="@+id/arrivaltimeVal" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="45dp" 
      android:layout_toRightOf="@+id/stationnameVal" 
      android:text="SRC" 
      android:textColor="@color/black" 
      android:textSize="12sp" /> 

代码是:

RelativeLayout rel = new RelativeLayout(this); 
    // first TextView 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 

     TextView stateName = new TextView(DisplayActivity.this); 
     stateName.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
     params.setMargins(0, 5, 0, 0); 
     stateName.setText("KANYAKUMARI (CAPE)"); 
     stateName.setId(1); 
     stateName.setTextColor(R.color.black); 
     stateName.setTextSize(12); 
     rel.addView(stateName, params); 

    // Adding Second TextView 
     RelativeLayout.LayoutParams params2 = new RelativeLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

     TextView arr = new TextView(DisplayActivity.this); 
     arr.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
      LayoutParams.WRAP_CONTENT)); 
     arr.setText("SRC"); 
     arr.setTextColor(R.color.white); 
     arr.setTextSize(12); 
     params2.addRule(RelativeLayout.ALIGN_PARENT_TOP, stateName.getId()); 
     params2.addRule(RelativeLayout.RIGHT_OF, 1); 
     params2.setMargins(45, 0, 0, 0); 
     rel.addView(arr, params2); 

回答

1

如何改变 “LayoutParams.FILL_PARENT” 到 “LayoutParams.WRAP_CONTENT”?

问候

紫藤陈

+0

其实我好奇的东西。是否有可能使两个TextView都使用RelativeLayout来填充可用空间。使用LinearLayout,将使用'layout_weight。但是关于相对布局的idk。 – Andy 2012-08-17 07:37:19

+0

@你可以使用Display Metrics来查找屏幕大小(在你的情况下是宽度),并将textView的宽度设置为tv.setWidth(width/2);对于textViews – 2012-08-17 07:39:05

+0

嗯,这可以工作。不是一个坏主意。对于4或5个视图是否能正确工作?均匀地分割空间可行,但奇数又如何? – Andy 2012-08-17 07:47:04

1

改变这一点:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

或本:

rel.addView(stateName, params); 

rel.addView(stateName); 

,改变这一点:

params2.addRule(RelativeLayout.ALIGN_PARENT_TOP, stateName.getId()); 

params2.addRule(RelativeLayout.ALIGN_PARENT_TOP); 

和PARAM做同样的:

params.addRule(RelativeLayout.ALIGN_PARENT_TOP); 

否则就删除它,因为康亚库玛瑞和src没有正确对齐。

真正做到这一点对准他们:

params2.addRule(RelativeLayout.ALIGN_TOP, 1); 
+0

将参数从FILL_PARENT改为WRAP_CONTENT可解决此问题。 – Badrinath 2012-08-17 08:31:18

相关问题