2013-08-01 108 views
0

我正在嘗試將TextView添加到may RelativeLayout中。它不工作。在android中以編程方式創建和添加TextView

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     RelativeLayout rl = (RelativeLayout) findViewById(R.layout.activity_main); 
     TextView tv = new TextView(MainActivity.this); 

     tv.setText("Hello World"); 
     tv.setTextColor(Color.BLACK); 
     tv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 
     rl.addView(tv);  
     setContentView(R.layout.activity_main); 

    } 
+0

'activity_main'是'activity_main.xml'中的'RelativeLayout'的'id'嗎?它是崩潰還是不顯示?在xml中創建'View's更容易,除非有特殊原因需要以編程方式進行。 – codeMagic

+0

是的。 @codeMagic – FAISAL

+0

@LASIAF發佈你的'activity_main.xml' – Raghunandan

回答

0

您應該在super.onCreate之後立即致電setContentView(R.layout.activity_main)

我這樣做:

  1. 我去main_activity.xml和添加的屬性android:id="@+id/activity_main"到RelativeLayout的。

  2. 編輯的代碼:

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
    
        //RelativeLayout rl = (RelativeLayout) findViewById(R.layout.activity_main); 
        RelativeLayout rl = (RelativeLayout) findViewById(R.id.activity_main); 
        TextView tv = new TextView(MainActivity.this); 
    
        tv.setText("Hello World"); 
        tv.setTextColor(Color.BLACK); 
        tv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 
        rl.addView(tv);  
    
    } 
    

    但儘管如此,TextView的重疊將在RelativeView等產生的物品。也許你應該考慮使用LinearLayout而不是垂直方向。

+0

仍然無法正常工作。 @nio – FAISAL

+0

如果您對linearlayout代碼感興趣,請再次評論。 – nio

0

致電setContentView(R.layout.activity_main)將重新佈局您的佈局,覆蓋您之前添加的佈局。將它上移,所以這是撥打super後的第一件事。例如:

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

    RelativeLayout rl = (RelativeLayout) findViewById(R.layout.activity_main); 
    TextView tv = new TextView(MainActivity.this); 

    tv.setText("Hello World"); 
    tv.setTextColor(Color.BLACK); 
    tv.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT)); 
    rl.addView(tv);  
} 
+0

仍然無法使用。 @MH。 – FAISAL

相關問題