web-dev-qa-db-ja.com

利用可能な画面幅の半分に宣言的に幅を割り当てます

ウィジェットの幅を使用可能な画面幅の半分に割り当て、宣言型xmlを使用することは可能ですか?

101
bugzy

ウィジェットがボタンの場合:

<LinearLayout Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:weightSum="2"
    Android:orientation="horizontal">
    <Button Android:layout_width="0dp"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"
            Android:text="somebutton"/>

    <TextView Android:layout_width="0dp"
            Android:layout_height="wrap_content"
            Android:layout_weight="1"/>
</LinearLayout>

ウィジェットが半分を占め、別のウィジェットが残り半分を占めることを想定しています。トリックは、LinearLayoutを使用して、両方のウィジェットでlayout_width="fill_parent"を設定し、両方のウィジェットでlayout_weightを同じ値に設定することです。両方とも同じウェイトのウィジェットが2つある場合、LinearLayoutは2つのウィジェット間で幅を分割します。

258
synic

制約レイアウトの使用

  1. ガイドラインを追加する
  2. 割合を50%に設定します
  3. ビューをガイドラインと親に制限します。

enter image description here

パーセンテージに変更できない場合は、 this answer をご覧ください。

XML

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="81dp">

    <Android.support.constraint.Guideline
        Android:id="@+id/guideline8"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.5"/>

    <TextView
        Android:id="@+id/textView6"
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        Android:layout_marginBottom="8dp"
        Android:layout_marginEnd="8dp"
        Android:layout_marginStart="8dp"
        Android:layout_marginTop="8dp"
        Android:text="TextView"
        app:layout_constraintBottom_toTopOf="@+id/guideline8"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

</Android.support.constraint.ConstraintLayout>
32
Suragch

幅を0dpにして、サイズがその重量に正確に一致するようにします。これにより、子ビューのコンテンツが大きくなっても、正確に半分に制限されます(重量に応じて)

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

    <Button
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:text="click me"
    Android:layout_weight="0.5"/>


    <TextView
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:text="Hello World"
    Android:layout_weight="0.5"/>
  </LinearLayout>
15
Rajesh Batth

画面の半分を占める中央の単一アイテムの別の方法:

<LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">

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

        <EditText
            Android:layout_width="0dp"
            Android:layout_height="wrap_content"
            Android:layout_weight="2" />

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

</LinearLayout>
4
Denys_Sh
<LinearLayout 
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<TextView
    Android:id="@+id/textD_Author"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="20dp"
    Android:text="Author : "
    Android:textColor="#0404B4"
    Android:textSize="20sp" />
 <TextView
    Android:id="@+id/textD_Tag"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="20dp"
    Android:text="Edition : "
    Android:textColor="#0404B4"
    Android:textSize="20sp" />
<LinearLayout
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:orientation="horizontal"
    Android:weightSum="1" >
    <Button
        Android:id="@+id/btbEdit"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="0.5"
        Android:text="Edit" />
    <Button
        Android:id="@+id/btnDelete"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_weight="0.5"
        Android:text="Delete" />
</LinearLayout>
</LinearLayout>
1
Shahzad Shameer