addView不起作用(RelativeLayout)

时间:2013-12-26 12:07:08

标签: android

这是我的MainActivity XML文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/testingView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:context=".TestingActivity" >

这是.java文件:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.testing_activity);

        RelativeLayout viewOne = (RelativeLayout) findViewById(R.id.testingView);
        RelativeLayout viewTwo = new RelativeLayout(this);

        viewTwo.setId(5233);
        viewTwo.setBackgroundColor(0xFF0000);

然后,我尝试添加此代码(以及许多其他和相同的,以不同的方式,使用不同的和固定的大小,但它们都没有工作):

        viewTwo.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,  LinearLayout.LayoutParams.WRAP_CONTENT));

最后:

        viewOne.addView(viewTwo);

试图添加它,但没有用:

        viewTwo.bringToFront();

我只是看到带有 Hello World!文字的白色背景。 任何解决方案?

4 个答案:

答案 0 :(得分:2)

viewTwo.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,  RelativeLayout.LayoutParams.FILL_PARENT));

试试这个。由于viewTwo没有任何孩子,你不会看到任何东西。尝试为viewTwo设置不同的backgroundColor

viewTwo.setBackgroundColor(Color.RED);

答案 1 :(得分:0)

RelativeView是容纳视图的容器,当然它也是View,你也可以添加嵌套视图。

当你对这样的事情做出正确的时候:

viewTwo.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,  LinearLayout.LayoutParams.WRAP_CONTENT));

你告诉你的观点是它的孩子的宽度。由于您未向该视图添加任何子项,因此with将为0。

答案 2 :(得分:0)

使用RelativeLayout而不是LinearLayout

viewTwo.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT))

答案 3 :(得分:0)

试试这个 -

viewTwo.setBackgroundColor(getResources().getColor(Color.RED));

更新 -

为您的动态视图创建模板,例如relative layout-

在res / layout文件夹中创建一个xml - relative_view_template.xml并复制到代码下面。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#ff0000"
     />

并在您的班级中使用此代码 -

RelativeLayout relativeLayout = (RelativeLayout)((Activity) context).getLayoutInflater().inflate(R.layout.relative_view_template, null);

这对我有用,请试试这个。