在这段代码中,我试图为我的相对布局设置背景,然后我在布局中添加了一个文本视图(在它的中心),但是当我运行应用程序时,文本没有居中!
这是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)
时,它会正确显示,但正如预期的那样,布局没有背景。
答案 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>