web-dev-qa-db-ja.com

Android Linear Layout-要素をビューの下部に保持する方法は?

TextViewがあり、これをLinearLayoutを垂直に配置された要素とともに使用しているランドスケープアクティビティの下部に固定します。

テキストビューでAndroid:gravity="bottom"を設定しましたが、LinearLayoutの最後の要素のすぐ下に配置するのが好きです。

助言がありますか?

71
Androider

更新:私はまだこの質問に賛成票をもらっています。最良の情報を確実に公開するという精神で、この回答を更新することにしました。

現代では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のひどい実装になります。それを行うためのより良い方法は、単純ではないにしてもほぼ同じレベルの労力と複雑さです

LinearLayoutからTextViewを取り出し、RelativeLayout内にLinearLayoutとTextViewを配置します。属性Android:layout_alignParentBottom="true"をTextViewに追加します。上記の属性を除くすべての名前空間およびその他の属性が省略されている場合:

<RelativeLayout>
  <LinearLayout>
    <!-- All your other elements in here -->
  </LinearLayout>
  <TextView
    Android:layout_alignParentBottom="true" />
</RelativeLayout>
100
Brian Cooley

Android:layout_weight="1"を設定して、残りのスペースを埋めるために、上のビューの1つを展開する必要があります。これにより、最後のビューが下にプッシュされます。

ここに私が意味することの簡単なスケッチがあります:

<LinearLayout Android:orientation="vertical">
    <View/>
    <View Android:layout_weight="1"/>
    <View/>
    <View Android:id="@+id/bottom"/>
</LinearLayout>

ここで、各子ビューの高さは"wrap_content"であり、他のすべては"fill_parent"です。

112
Matthew Willis

私はそれが完璧な解決策になると思う:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical">

    <!-- Other views -->
    <Space
        Android:layout_width="match_parent"
        Android:layout_height="0dp"
        Android:layout_weight="1"/>

    <!-- Target view below -->
    <View
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">

</LinearLayout>
52

パラメータ重力を最下部にをテキストビューではなく、線形レイアウトに配置する必要があります。このような:

<LinearLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"
    Android:gravity="bottom|end">
    <TextView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:text="Something"/>
</LinearLayout>

ステップ1:線形レイアウト内に2つのビューを作成する

ステップ2:最初のビューはAndroid:layout_weight = "1"に設定する必要があります

ステップ3:2番目のビューは自動的に下向きに配置されます

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

    <View
    Android:layout_width="match_parent"
    Android:layout_height="0dp"
    Android:layout_weight="1" />

    <Button
    Android:id="@+id/btn_health_advice"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"/>


</LinearLayout>
7
Vinod Joshi

これが好き

 <LinearLayout
Android:id="@+id/LinearLayouts02"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:orientation="vertical"
Android:gravity="bottom|end">

<TextView
    Android:id="@+id/texts1"
    Android:layout_height="match_parent"
    Android:layout_width="match_parent"
    Android:layout_weight="2"
    Android:text="@string/forgotpass"
    Android:padding="7dp"
    Android:gravity="bottom|center_horizontal"
    Android:paddingLeft="10dp"
    Android:layout_marginBottom="30dp"
    Android:bottomLeftRadius="10dp"
    Android:bottomRightRadius="50dp"
    Android:fontFamily="sans-serif-condensed"
    Android:textColor="@color/colorAccent"
    Android:textStyle="bold"
    Android:textSize="16sp"
    Android:topLeftRadius="10dp"
    Android:topRightRadius="10dp"
   />

</LinearLayout>
0

使用することもできます

Android:layout_gravity="bottom"

テキストビュー用

0
Pmap Technotech