如何将RelativeLayout(从XML)添加到我以编程方式定义的LinearLayout?

时间:2012-06-28 23:32:10

标签: java android xml android-linearlayout relativelayout

我已经查看了其他问题并且没有发现任何与此情况完全匹配的内容。我在XML中定义了一个RelativeLayout。我想将整个RelativeLayout放在GraphView对象下面(来自我单独创建的类)。我认为将RelativeLayout放在GraphView下面的最好方法就是将这两个放在LinearLayout中,我试图以编程方式定义它。

这就是我到目前为止 - 它有什么问题,但我不太确定是什么。

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class Grapher extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        
        LinearLayout ll = new LinearLayout(this); 
        GraphView gv = new GraphView(this); 
        RelativeLayout rl = (RelativeLayout) findViewById(R.id.mainRelativeLayout);
        ll.addView(gv); 
        ll.addView(rl); 
        setContentView(ll); 

和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:id="@+id/mainRelativeLayout"
    android:orientation="vertical">
    <Button
        android:id="@+id/second"
        android:clickable="true"
        android:background="@drawable/button_chooser"
        android:layout_width="70dp"
        android:layout_height="40dp"
        android:text="@string/second" 
        android:textColor="@color/white"
        android:textSize="15sp"/>
    <Button
        android:id="@+id/alpha"
        android:clickable="true"
        android:background="@drawable/button_chooser"
        android:layout_width="70dp"
        android:layout_height="40dp"
        android:layout_below="@id/second"
        android:layout_alignParentLeft="true"
        android:text="@string/alpha"
        android:textColor="@color/white"
        android:textSize="15sp" />
    <Button
        android:id="@+id/mode"
        android:clickable="true"
        android:background="@drawable/button_chooser"
        android:layout_width="70dp"
        android:layout_height="40dp"
        android:layout_toRightOf="@id/second"
        android:text="@string/mode"
        android:textColor="@color/white"
        android:textSize="15sp" />
</RelativeLayout>

感谢您的帮助。我有一种预感,这只是我看到的非常简单的事情。

1 个答案:

答案 0 :(得分:3)

Activity.findViewById搜索绑定到活动的视图(通常是调用setLayout(R.layout.yourlayout);的结果)。由于您没有调用此方法,因此当前没有任何视图处于活动状态,因此调用findViewById将返回null。

您尝试做的是从xml中扩展布局,然后以编程方式将其添加到视图中。你应该做的是这样的事情:

Inflater inflater = LayoutInflater.from(context);
//this will inflate the mainRelativeLayout into the linear layout you called "ll"
inflater.inflate(R.id.mainRelativeLayout, ll);