1

在 xml 中得到了我的 TextView:

<TextView  
    android:id="@+id/myTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:gravity="left"
    android:text="TextView"/>

我想创建多个 TextView,但我想让它们看起来和this一样。

所以我尝试了:

TextView newTextView = new TextView(this);

newTextView.setLayoutParams(myTextView.getLayoutParams());

我认为这应该从 xml 中的 myTextView straigthlghly(?) 获取所有布局参数,并将它们传递给 newTextView 进行设置。

我的问题是:什么都没有发生。没有生效,为什么?

4

1 回答 1

1

这是一个示例项目,表明它有效。您可以通过查看可视化编辑器的预览来查看它的工作原理,它看起来与运行时显示的不同。我认为您的错误是您没有为加权视图设置 0px(或 0dp,零仍然为零)。

main.xml(布局):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:id="@+id/container">

  <TextView android:id="@+id/textView1" android:layout_width="wrap_content"
    android:layout_height="0px" android:text="TextView1"
    android:layout_weight="1" android:background="#ffff0000" />

  <TextView android:id="@+id/textView2" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:text="TextView2"
    android:background="#ff00ff00" />

</LinearLayout>

测试活动.java:

public class TestActivity extends Activity
  {
  /** Called when the activity is first created. */
  @Override
  public void onCreate(final Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final TextView tv1=(TextView)findViewById(R.id.textView1);
    final TextView tv2=(TextView)findViewById(R.id.textView2);
    final LayoutParams layoutParams=tv1.getLayoutParams();
    tv2.setLayoutParams(layoutParams);
    // adding textView programatically:
    final TextView tv3=new TextView(this);
    tv3.setText("textView3");
    tv3.setBackgroundColor(0xff0000ff);
    tv3.setLayoutParams(layoutParams);
    final ViewGroup root=(ViewGroup)findViewById(R.id.container);
    root.addView(tv3);
    }
  }
于 2012-05-26T09:14:10.723 回答