setContentView() 与 XML 布局与视图
Posted
技术标签:
【中文标题】setContentView() 与 XML 布局与视图【英文标题】:setContentView() with XML layout vs View 【发布时间】:2013-12-09 13:28:32 【问题描述】:在 android 中,我习惯于使用 XML 文件设置布局
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 文件?
【问题讨论】:
好吧,我不认为你可以在一个 Activity 中同时应用 setContentView()。 看到这个:***.com/questions/3995215/… 或 ***.com/questions/4203506/… 【参考方案1】:当然。
在您的 layout.xml 文件中,您必须定义 id
的 main 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);
【讨论】:
【参考方案3】:例如:
在 layout.xml 中粘贴这段代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_ >
<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");
【讨论】:
以上是关于setContentView() 与 XML 布局与视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 的 setContentView 中将自定义布局设置为主视图
setContentView() 删除使用 addView() 添加的元素
Android之使用Assets目录中的xml布局网页音乐等资源