RelativeLayout通过膨胀来调整

时间:2014-08-04 13:08:29

标签: android android-layout layout-inflater

在这段代码中,我试图为我的相对布局设置背景,然后我在布局中添加了一个文本视图(在它的中心),但是当我运行应用程序时,文本没有居中!

这是java代码:

RelativeLayout mainLayout;
@Override
protected void onCreate(Bundle savedInstanceState)  {


    super.onCreate(savedInstanceState);
    createMainLayout();
    LayoutInflater inflater = getLayoutInflater();
    RelativeLayout list = (RelativeLayout)inflater.inflate(R.layout.activity_main
    , null, false);
    mainLayout.addView(list);
    setContentView(mainLayout);
}

public void createMainLayout()
{
    Bitmap bm = BitmapFactory.decodeResource(getResources(),     
    R.drawable.background_pattern);
    BitmapDrawable drawable = new BitmapDrawable(getResources(), bm);
    drawable.setTileModeXY(android.graphics.Shader.TileMode.REPEAT, 
    android.graphics.Shader.TileMode.REPEAT);
    mainLayout = new RelativeLayout(this);
    mainLayout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
    LayoutParams.MATCH_PARENT));
    mainLayout.setBackground(drawable);
}

这是我的activity_main

<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"
tools:context="${relativePackage}.${activityClass}" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="140dp"
    android:textSize="70sp"
    android:text="@string/app_name" />
</RelativeLayout>

为什么会这样?当我只是在setContentView(R.Layout.activity_main)旁边拨打setContentView(mainLayout)时,它会正确显示,但正如预期的那样,布局没有背景。

3 个答案:

答案 0 :(得分:0)

从textview中删除这些行:

android:layout_alignParentTop="true"
android:layout_marginTop="140dp"

答案 1 :(得分:0)

试试这个......

<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"
tools:context="${relativePackage}.${activityClass}" 
android:gravity="center" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="70sp"
    android:text="@string/app_name" />

</RelativeLayout>

答案 2 :(得分:0)

问题在这里inflater.inflate(R.layout.activity_main, null);。使用此功能进行充气时,不会考虑根视图。这是解决方法;

<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"
    tools:context="${relativePackage}.${activityClass}" >

        <RelativeLayout         
        android:layout_width="match_parent"
        android:layout_height="match_parent">

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="140dp"
                android:textSize="70sp"
                android:text="@string/app_name" />

        </RelativeLayout>

</RelativeLayout>