Android: How to fill RelativeLayout to full width

2019-02-08 06:26发布

I am creating an Android app which has a main RelativeLayout and some LinearLayout within it.

Now i have this problem. When dragging items to the editor, e.g. a LinearLayout, it doesn't fit to the full width of the screen. How can I make this possible? This is my XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true"
android:gravity="fill"
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=".MainActivity" >

<LinearLayout
    android:id="@+id/itemDetailLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:orientation="vertical" 
    android:fillViewport="true" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/itemImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:minHeight="40dp"
            android:minWidth="40dp"
            android:src="@drawable/ic_launcher" />

        <TextView
            android:id="@+id/itemName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:text="Name"
            android:textAppearance="?android:attr/textAppearanceMedium" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:fillViewport="true" >

        <TextView
            android:id="@+id/itemRecentHigh"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Recent High" />

        <TextView
            android:id="@+id/itemRecentLow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Recent Low" />

        <TextView
            android:id="@+id/itemAverage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Average" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:id="@+id/listViewLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/itemDetailLayout"
    android:layout_marginTop="10dp"
    android:fillViewport="true"
    android:gravity="fill_horizontal"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/searchListView"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true" >

    </ListView>
</LinearLayout>

Added a screenshot for more info. Added blue background to have some contrast.

http://i.stack.imgur.com/tPxsE.png

6条回答
▲ chillily
2楼-- · 2019-02-08 06:34

Replace this:

   android:layout_width="wrap_content"
   android:layout_height="wrap_content"

With

   android:layout_width="match_parent"
   android:layout_height="wrap_content"

into your LinearLayout or Remove all the Padding from main RelativeLayout

查看更多
3楼-- · 2019-02-08 06:34

Try

<LinearLayout
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:orientation="vertical>
   // Other views within the linear layout
</LinearLayout>

I suppose you are using Eclipse. Personally, I hate the Graphical Editor of Eclipse and I usually write the XML code directly because working with the editor is a real pain

查看更多
仙女界的扛把子
4楼-- · 2019-02-08 06:38

Don't use fill_parent as it is deprecated. Instead to your RelativeLayout set

android:layout_width="fill_parent"
android:layout_height="fill_parent"

Then, to the list view that you want to fill the rest of the screen, you can set this tags

android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"

By doing so, you are telling the XML that you want your ListView to do what fill_parent used to do in previous versions of Android.

Kind regards!

查看更多
叛逆
5楼-- · 2019-02-08 06:43

The space between the blue part and the "end of the screen". On the sides and above the part where the back button and home button are.

Remove the padding from the root RelativeLayout.

查看更多
你好瞎i
6楼-- · 2019-02-08 06:56

you should try something like the following :

<LinearLayout
    android:id="@+id/itemDetailLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
     >

...


</LinearLayout>

what i mean you should do this :

android:layout_width="fill_parent"

for every LinearLayout that you want its width to fill_parent .

FILL_PARENT means that the view wants to be as big as its parent as mentioned in the documentation .

and please give me some feedback

Hope That Helps .

查看更多
我欲成王,谁敢阻挡
7楼-- · 2019-02-08 06:57

Removing padding makes the linear layout fit the entire screen of the device

查看更多
登录 后发表回答