Оновлення: Я все ще отримую голоси за це питання, яке все ще є прийнятою відповіддю і на яке, на мою думку, я відповів погано. У дусі переконатися, що найкраща інформація є там, я вирішив оновити цю відповідь.
У сучасному Android я б ConstraintLayout
це робив. Це ефективніше і зрозуміліше.
<ConstraintLayout>
<View
android:id="@+id/view1"
...other attributes elided... />
<View
android:id="@id/view2"
app:layout_constraintTop_toBottomOf="@id/view1" />
...other attributes elided... />
...etc for other views that should be aligned top to bottom...
<TextView
app:layout_constraintBottom_toBottomOf="parent" />
Якщо ви не хочете використовувати ConstraintLayout, використання LinearLayout із розширеним поданням є простим і чудовим способом зайняти зайвий простір (див. Відповідь @Matthew Wills). Якщо ви не хочете розширювати фон жодного з подань над поданням знизу, можете додати невидимий вигляд, щоб зайняти простір.
Відповідь, яку я спочатку дав, працює, але неефективна. Неефективність може не бути великою проблемою для одного макета верхнього рівня, але це було б жахливою реалізацією в ListView
або RecyclerView
, і просто немає жодних причин для цього, оскільки є кращі способи зробити це приблизно на одному рівні зусиль та складності, якщо не простіше.
Вийміть TextView з LinearLayout, а потім помістіть LinearLayout і TextView всередину RelativeLayout. Додайте атрибут android:layout_alignParentBottom="true"
до TextView. З усіма просторами імен та іншими атрибутами, за винятком вищезазначеного, вилучено:
<RelativeLayout>
<LinearLayout>
</LinearLayout>
<TextView
android:layout_alignParentBottom="true" />
</RelativeLayout>
android:gravity="bottom"
зTextView
і додайте його вLinearLayout
. Ваша проблема буде вирішена.