RelativeLayout中的RelativeLayout未完全对齐

时间:2014-08-11 07:19:47

标签: android android-layout alignment android-relativelayout

我在另一个relativelayout里面有一个relativelayout,里面有4个按钮。我想将内部relativelayout与父relativelayout的左边对齐但是它没有完全对齐,内部视图的左边和父视图的左边之间有一个空的空格,这里是xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="raw4.kaw.mp2.MainActivity"
android:background="@color/background_all" >

<RelativeLayout 
    android:id="@+id/main_btn_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >

<Button
    android:id="@+id/btn_main_news"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:text="@string/btn_news_text"
    android:layout_marginTop="10dp"
    android:layout_alignParentTop="true"
    android:background="@color/background_btn"
    android:textColor="@color/text_color_btn" />

<Button
    android:id="@+id/btn_main_products"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:text="@string/btn_products_text"
    android:layout_below="@id/btn_main_news"
    android:layout_marginTop="10dp"
    android:background="@color/background_btn"
    android:textColor="@color/text_color_btn" />

<Button
    android:id="@+id/btn_main_aboutus"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:text="@string/btn_aboutus_text"
    android:layout_below="@id/btn_main_products"
    android:layout_marginTop="10dp"
    android:background="@color/background_btn"
    android:textColor="@color/text_color_btn" />

<Button
    android:id="@+id/btn_main_contactus"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:text="@string/btn_contactus_text"
    android:layout_below="@id/btn_main_aboutus"
    android:layout_marginTop="10dp"
    android:background="@color/background_btn"
    android:textColor="@color/text_color_btn" />

</RelativeLayout>

这是MainActivity.java中的代码,通过添加对齐规则将内部布局宽度减少到80%:

DisplayMetrics metrics = this.getResources().getDisplayMetrics();
    int dpi = metrics.widthPixels;
    int dpiPerc = (int)(dpi * 0.8);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            dpiPerc,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
    params.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
    RelativeLayout main_rl_container = (RelativeLayout)findViewById(R.id.main_btn_container);
    main_rl_container.setLayoutParams(params);

但这是结果:

http://i57.tinypic.com/2l7rpy.png

正如您所看到的那样,内部布局的左侧存在间隙。谢谢你的帮助。

4 个答案:

答案 0 :(得分:3)

复制粘贴此代码它将解决您的问题

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="raw4.kaw.mp2.MainActivity"
android:background="@color/background_all" >

<RelativeLayout 
    android:id="@+id/main_btn_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    >

<Button
    android:id="@+id/btn_main_news"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:text="@string/btn_news_text"
    android:layout_marginTop="10dp"
    android:layout_alignParentTop="true"
    android:background="@color/background_btn"
    android:textColor="@color/text_color_btn" />

<Button
    android:id="@+id/btn_main_products"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:text="@string/btn_products_text"
    android:layout_below="@id/btn_main_news"
    android:layout_marginTop="10dp"
    android:background="@color/background_btn"
    android:textColor="@color/text_color_btn" />

<Button
    android:id="@+id/btn_main_aboutus"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:text="@string/btn_aboutus_text"
    android:layout_below="@id/btn_main_products"
    android:layout_marginTop="10dp"
    android:background="@color/background_btn"
    android:textColor="@color/text_color_btn" />

<Button
    android:id="@+id/btn_main_contactus"
    android:layout_width="fill_parent"
    android:layout_height="60dp"
    android:text="@string/btn_contactus_text"
    android:layout_below="@id/btn_main_aboutus"
    android:layout_marginTop="10dp"
    android:background="@color/background_btn"
    android:textColor="@color/text_color_btn" />

</RelativeLayout>

您的问题是您的父布局使用android:paddingLeft="@dimen/activity_horizontal_margin"这就是为什么它不完全要删除此行,您将获得解决方案,您可以复制粘贴我的上述代码:)

答案 1 :(得分:2)

RelativeLayout上有填充。

删除以下行:

android:paddingLeft="@dimen/activity_horizontal_margin"

答案 2 :(得分:2)

android:paddingLeft="@dimen/activity_horizontal_margin"

因为尺寸。 你do not need to remove these Lines

但转到res文件夹&gt;值&gt; dimen.xml。 默认情况下,activity_horizontal_margin指定的某些空间分配将其更改为0dp

如果你删除了那条好的但是,你将在你要创建的每个XML文件中遇到这些问题。所以我认为这个解决方案更好。

答案 3 :(得分:-1)

由于在根RelativeLayout中设置的填充,因此接缝给我。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="raw4.kaw.mp2.MainActivity"
android:background="@color/background_all" >