我有两个单独的xml文件,如下所示,它们都放在布局文件夹中。其中一个名为firstlayout
,另一个名为secondlayout
。在活动中,我想使用layoutinflater
显示两者的内容。尽管如此,firstlayout.xml
其内容的方向和水平对齐,而secondlayout.xml
的{{1}}在中心对齐,但是,当我使用relativelayout
时如下所示代码,输出是放在屏幕顶部的水平混合文本。
我希望屏幕上的输出为,顶部为水平文本,中心为水平文本。请检查我的文件和下面的代码,让我知道我错过了什么。
Java_Code:
addcontentview
firstlayout.xml
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.firstlayout);
LayoutInflater loiViewInflater = (LayoutInflater) getSystemService (Context.LAYOUT_INFLATER_SERVICE);
loiViewInflater = LayoutInflater.from(getApplicationContext());
View mView = loiViewInflater.inflate(R.layout.secondlayout, null);
addContentView(mView, new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
secondlayout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/TextView00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="first xml file00"
android:gravity="top">
</TextView>
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="first xml file01"
android:layout_marginLeft="18dp"
android:gravity="top">
</TextView>
</LinearLayout>
答案 0 :(得分:1)
您正在为第二个布局将LayoutParams设置为WRAP_CONTENT,因此即使您将内部RelativeLayout的重力设置为居中,您的外部LinearLayout仍将在左上角对齐并调整自身大小以包装内容,所以一切都会在左上角结束。
从secondlayout.xml中删除LinearLayout,您不需要它。然后将您的代码更改为:
View mView = loiViewInflater.inflate(R.layout.secondlayout, null);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
addContentView(mView, params);