2013-12-09 39 views
0

在Android中,我已经习惯了与XML文件的setContentView()的XML布局VS查看

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

设置布局,但你也可以设置使用查看内容的Java

// Create the text view 
    TextView textView = new TextView(this); 
    textView.setTextSize(40); 
    textView.setText(message); 

    // Set the text view as the activity layout 
    setContentView(textView); 

这有不能使用布局文件的副作用。

有无论如何,我可以以编程方式设置,例如,文本值,仍然使用layout.xml文件?

+0

嗯,我不认为你可以在一个Activity中同时应用setContentView()。 –

+0

看到这个:http://stackoverflow.com/questions/3995215/add-and-remove-views-in-android-dynamically或http://stackoverflow.com/questions/4203506/how-can-i-add- A-的TextView至A-LinearLayout中,动态的,机器人 –

回答

2

当然。

在你layout.xml文件必须定义idmain layout(android:id="@+id/mainLayout"),然后你可以这样做:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ViewGroup mainView = (ViewGroup) findViewById(R.id.mainLayout); 

    // Create the text view 
    TextView textView = new TextView(this); 
    textView.setTextSize(40); 
    textView.setText(message); 

    mainView.addView(textView); 
} 
2

当您使用的setContentView(R.layout.activity_main),你告诉要使用的布局是xml布局文件activity_main。

当您使用setContentView(textView)时,它将取代以前由textView组件添加的xml布局文件。

您可以在布局文件中声明您的TextView,然后以编程方式设置文本。

TextView textView = (TextView) findViewById(R.id.textView); 
textView.setTextSize(40); 
textView.setText(message); 
0

例如:

在layout.xml粘贴此代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id = "@+id/lblText" 
     android:textSize="40" 
     /> 

</RelativeLayout> 

,并在你MainActivity:

public class MainActivity extends Activity 
{ 

    private TextView lblText; 

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

     this.lblText = (TextView)findViewById(R.id.lblText); 
     this.lblText.setText("your message");   
    } 
}