TextView
があり、これをLinearLayout
を垂直に配置された要素とともに使用しているランドスケープアクティビティの下部に固定します。
テキストビューでAndroid:gravity="bottom"
を設定しましたが、LinearLayout
の最後の要素のすぐ下に配置するのが好きです。
助言がありますか?
更新:私はまだこの質問に賛成票をもらっています。最良の情報を確実に公開するという精神で、この回答を更新することにしました。
現代では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>
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"
です。
私はそれが完璧な解決策になると思う:
<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>
パラメータ重力を最下部にをテキストビューではなく、線形レイアウトに配置する必要があります。このような:
<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>
これが好き
<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>
使用することもできます
Android:layout_gravity="bottom"
テキストビュー用