Rahul
Rahul

Reputation: 387

How to align textview at the bottom of the screen inside a scroll view android

I am designing a login screen having following items

  1. Logo

  2. User Name

  3. Password 4.Login Button

  4. Copyright

Below is the layout I have tried to implement the same

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="@style/ActivityStyle"
android:orientation="vertical"
tools:context=".abc.ui.main.login.view.LoginActivity">
<!-- Login progress -->
<ProgressBar
    android:id="@+id/login_progress"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_marginBottom="8dp"
    android:visibility="gone" />

<ScrollView
    android:id="@+id/login_form"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center_vertical">

    <RelativeLayout
        android:id="@+id/email_login_form"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img_abc_logo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="20dp"
            android:src="@mipmap/abc_logo" />

        <LinearLayout
            android:id="@+id/linearLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/img_abc_logo"
            android:layout_marginTop="80dp"

            android:orientation="vertical">


            <android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.v7.widget.AppCompatEditText
                    android:id="@+id/edit_user_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="16dp"
                    android:hint="@string/prompt_email"
                    android:inputType="textEmailAddress"
                    android:maxLines="1"
                    android:paddingTop="10dp"
                    android:singleLine="true"
                    android:textColor="@color/fontColor"
                    android:textColorHint="@color/copy_right_font_color" />

            </android.support.design.widget.TextInputLayout>

            <android.support.design.widget.TextInputLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <android.support.v7.widget.AppCompatEditText
                    android:id="@+id/edit_password"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/prompt_password"
                    android:imeActionId="@+id/login"
                    android:imeActionLabel="@string/action_sign_in_short"
                    android:imeOptions="actionUnspecified"
                    android:inputType="textPassword"
                    android:maxLines="1"
                    android:singleLine="true"
                    android:textColor="@color/fontColor"
                    android:textColorHint="@color/copy_right_font_color" />
            </android.support.design.widget.TextInputLayout>

            <Button
                android:id="@+id/button_login"
                style="?android:textAppearanceSmall"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="16dp"
                android:height="55dp"
                android:text="@string/action_sign_in"
                android:textStyle="bold" />

        </LinearLayout>


    </RelativeLayout>
</ScrollView>

<TextView
    style="@style/CopyRightTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:paddingTop="30dp"
    android:text="@string/copy_right_text" />

My requirement

  1. Log should be at the top
  2. User name ,password and login button should be at the center of screen
  3. Copyright at the bottom

Problem faced

  1. Since I am using scroll view I am not able to fill the height . I tried with android:fillViewport="true" but my scroll disappear.So I am not able to place login input and button to center

  2. Copyright info is coming above login button when key board appear

Upvotes: 1

Views: 1320

Answers (3)

Sasi Kumar
Sasi Kumar

Reputation: 13278

In your TextView Remove

 android:layout_alignParentBottom="true"

add

 android:layout_below="@+id/linearLayout"

TextView move inside the RelativeLayout.like this

<TextView
style="@style/CopyRightTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout"
android:layout_centerHorizontal="true"
android:paddingTop="30dp"
android:text="@string/copy_right_text" />
</RelativeLayout>
</ScrollView>

Upvotes: 0

KDeogharkar
KDeogharkar

Reputation: 10959

as you are saying inside scrollview put it inside relative layout

    <TextView
        style="@style/CopyRightTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       android:layout_below="@+id/linearLayout"
        android:layout_centerHorizontal="true"
        android:paddingTop="30dp"

        android:text="@string/copy_right_text" />

</RelativeLayout>
</ScrollView>

Upvotes: 0

Suhas Bachewar
Suhas Bachewar

Reputation: 1230

Put this in your activity in side onCreate Method

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN | WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

or In Manifest at your activty:

android:windowSoftInputMode="adjustPan"

Upvotes: 2

Related Questions