Slim
Slim

Reputation: 1744

Why my element is not staying at the bottom as supposed?

I have this layout xml file:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true">

    <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"
        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">

        <TextView
            android:layout_marginTop="40dp"
            android:id="@+id/emalLbl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:text="@string/test" />

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/testTxtLay"
            android:layout_marginTop="10dp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/emalLbl"
            android:orientation="horizontal"
            android:padding="10dp"
            android:weightSum="1">

            <EditText
                android:id="@+id/testTxt"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:background="@drawable/edit_text_design" />
        </LinearLayout>

        <TextView
            android:layout_marginTop="60dp"
            android:id="@+id/reminderLbl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/testTxtLay"
            android:layout_centerHorizontal="true"
            android:text="@string/reminder" />

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_marginTop="10dp"
            android:id="@+id/reminderTxtLay"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/reminderLbl"
            android:orientation="horizontal"
            android:padding="10dp"
            android:weightSum="1">

            <EditText
                android:id="@+id/reminderTxt"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1.0"
                android:lines="2"
                android:background="@drawable/edit_text_design" />
        </LinearLayout>

        <View
            android:id="@+id/spacer"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_below="@id/reminderTxtLay"
            android:layout_centerHorizontal="true" />

        <Button
            android:layout_marginTop="200dp"
            android:id="@+id/pickDateBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@id/reminderTxtLay"
            android:layout_toLeftOf="@+id/spacer"
            android:onClick="showDatePickerDialog"
            android:text="@string/datePickerBtnTxt" />

        <Button
            android:id="@+id/pickTimeBtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/pickDateBtn"
            android:layout_alignParentRight="true"
            android:layout_toRightOf="@+id/pickDateBtn"
            android:onClick="showTimePickerDialog"
            android:text="@string/pickTimeBtn" />

        <View
            android:id="@+id/spacerTxt"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_below="@id/reminderTxtLay"
            android:layout_centerHorizontal="true" />

        <EditText
            android:layout_marginTop="15dp"
            android:id="@+id/selectedDate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/spacerTxt"
            android:layout_below="@id/pickDateBtn"
            android:layout_toLeftOf="@+id/spacerTxt" />

        <EditText
            android:id="@+id/selectedTime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@id/selectedDate"
            android:layout_below="@id/pickTimeBtn"
            android:layout_toRightOf="@+id/selectedDate" />

        <Button
            android:id="@+id/submitBtn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerInParent="true"
            android:onClick="submitData"
            android:text="@string/submitBtn" />

    </RelativeLayout>
</ScrollView>

This is the custom design for 7 inch tablets, placed in res\layout-sw600dp

Anyways in the android studio landscape preview it seems just fine:

enter image description here

But in the emulator something is going wrong and here is how it looks strange. What I mean is that the submit button is not on the bottom and the pickDate and pickTime buttons are at the bottom of the layout.

enter image description here enter image description here

I know that I'm missing a basic point here, but as an android developer, I'm not able to spot it.

Can you give me a push?

Upvotes: 0

Views: 196

Answers (2)

Furedal
Furedal

Reputation: 533

Here is a complete way to do what you seem to try accomplish. You don't need to create any Views for "spaces" etc. You only need to add margin or padding to either side of your views to make it move away from another view.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">

<RelativeLayout
    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">
    <LinearLayout
        android:id="@+id/linear_wrapper"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center_horizontal"
        >

        <TextView
            android:layout_marginTop="40dp"
            android:id="@+id/emalLbl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/test" />


        <EditText
            android:id="@+id/testTxt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/edit_text_design" />

        <TextView
            android:layout_marginTop="60dp"
            android:id="@+id/reminderLbl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/reminder" />


        <EditText
            android:id="@+id/reminderTxt"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:lines="2"
            android:background="@drawable/edit_text_design" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="200dp"
            >
            <Button
                android:id="@+id/pickDateBtn"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:onClick="showDatePickerDialog"
                android:text="@string/datePickerBtnTxt" />

            <Button
                android:id="@+id/pickTimeBtn"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:onClick="showTimePickerDialog"
                android:text="@string/pickTimeBtn" />
        </LinearLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <EditText
                android:id="@+id/selectedDate"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>

            <EditText
                android:id="@+id/selectedTime"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
        </LinearLayout>

    </LinearLayout>

    <Button
        android:id="@+id/submitBtn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/linear_wrapper"
        android:onClick="submitData"
        android:text="@string/submitBtn" />
</RelativeLayout>

Upvotes: 1

chris muiruri
chris muiruri

Reputation: 244

you can place 2 buttons next to each other!

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="10dp"
        android:weightSum="1">

        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:gravity="left"
            android:layout_height="wrap_content"
            android:lines="2" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="fill_parent"    
            android:gravity="right"
            android:layout_height="wrap_content" />

    </LinearLayout>

Upvotes: 0

Related Questions