Всегда размещайте кнопку с фиксированной высотой внизу экрана - PullRequest
0 голосов
/ 07 марта 2012

Я хочу оставить кнопку внизу экрана «Активность».Это должно быть исправлено независимо от размера прокрутки над ним.Проблема в том, что, как только текстовые просмотры прокрутки занимают какое-то место, высота моей кнопки продолжает уменьшаться, и в итоге она выталкивается из экрана активности.Это макет, который я использую.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical">

    <TextView android:id="@+id/tvBanner" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" android:gravity="center"
        android:text="Practice Exam" />


    <ScrollView android:id="@+id/Scroll" android:layout_width="match_parent"
        android:layout_height="wrap_content">

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

            <TextView android:id="@+id/tvDesc" android:layout_width="fill_parent"
                android:layout_height="wrap_content" android:layout_margin="10dp"
                android:gravity="center" android:paddingTop="40dp" android:text="@string/welcom"
                android:textSize="20sp" />

            <TextView android:id="@+id/tvURL" android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_marginBottom="30dp"
                android:paddingTop="10dp" android:layout_gravity="center"
                android:text="hello" android:textColor="@android:color/white"
                android:typeface="sans" />
        </LinearLayout>
    </ScrollView>

    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:gravity="bottom">

        <Button android:id="@+id/btBottom" android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:layout_weight="1"
            android:text="Enter" />

    </RelativeLayout>



</LinearLayout>

Я также пытался использовать android: weight = 1 и android: layout_height = 0dp в Scrollview.Но это удаляет всю часть Scrollview из моей деятельности, и я ничего не вижу.

Я знаю, что по этому поводу задано много похожих вопросов, и поверьте мне, я пробовал многие из них.Однако ни один из приемов не сработал для меня.Я потратил почти полдня, чтобы исправить это.Пожалуйста, помогите.

Ответы [ 6 ]

2 голосов
/ 07 марта 2012

Для такого случая всегда используйте RelativeLayouts.LinearLayout не предназначен для такого использования.

Попробуйте это:

<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"         
    android:layout_centerHorizontal="true">

    <Button android:id="@+id/btBottom"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Enter" 
        android:layout_alignParentBottom="true"/>

   <ScrollView
      ...
      android:layout_above="@id/btnGetMoreResults"/>
</RelativeLayour>
1 голос
/ 07 марта 2012

Вы должны попробовать использовать RealativeLayout вместо Linear, и тогда вы можете использовать

android:layout_above="@+id/btBottom"
 android:layout_alignParentBottom="true"

Это должно решить вашу проблему.

0 голосов
/ 07 марта 2012

Почему вы вообще используете LinearLayout на верхнем уровне? Выберите RelativeLayout с заливкой / заливкой и следующими тремя детьми (больше не вкладывайте!):

1) TextView с android:layout_alignParentTop="true" и android:layout_centerHorizontal="true"

2) Кнопка с android:layout_alignParentBottom="true" и android:layout_centerHorizontal="true"

3) ScrollView с android:layout_below=@id/textview_id и android:layout_above="@id/button_id"

Я не проверял, хотя, но попробуйте.

0 голосов
/ 07 марта 2012

Для этого было бы неплохо, если бы вы использовали RelativeLayout для внешнего макета оболочки.Тогда вы можете просто установить макет с кнопкой внутри на LinearLayout и установить layout_alignParentButtom="true", в то время как вы установите @+id/Scroll на layout_alignParentTop="true"

Кроме того, вы, вероятно, должны установить макет с высотой кнопки внутри.до wrap_content вместо fill_parent

0 голосов
/ 07 марта 2012
  1. Не упаковывать Button в RelativeLayout
  2. Установите layout_height от ScrollView до 0dp
  3. Добавить layout_weight от ScrollView до 1
0 голосов
/ 07 марта 2012

выглядит так, как будто вы нуждаетесь в 'alignParentBottom' в вашей кнопке, как это

    <Button android:id="@+id/btBottom" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" 
        android:text="Enter" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...