1

別のフルスクリーン相対レイアウト内に相対レイアウトを配置したいのですが、全幅を占有しますが、親の高さの50%を占めます。できれば、JavaコードではなくXMLを使用します。

親の中心を揃える方法と幅を埋める方法を理解しましたが、親の高さの50%を取得する方法はありますか?30%はどうですか?6.2834%?

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

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="??????????"
        android:layout_centerInParent="true" >

パーセンテージを作成しようとしている理由は、「dip」で指定すると、オブジェクトは同じサイズのままですが、レイアウトは画面サイズ(電話やタブレットなど)によって大きく異なるためです。

編集:

LinearLayoutと重み付けの使用に関するすべての回答をありがとうございます。私も前に見たことがあります。問題を単純化しすぎたのではないかと思います。次のようなものが必要だとしましょう。

ここに画像の説明を入力してください

複雑なLinearLayoutと均等化を使用して中央の正方形の輪郭を描き、次に中央の正方形を次fill_parentのようにすることができると思います。

ここに画像の説明を入力してください

しかし、他の3つの正方形(レイアウト)をどうすればよいでしょうか。別の正方形にLinearLayoutの別の「レイヤー」を作成できますか?または、画面全体を多数の小さなセルに分割し、これらのサブレイアウトを複数のセルにまたがらせる必要がありますか(これが可能かどうかはわかりません)?

4

5 に答える 5

6

LinearLayoutで使用してみてくださいweightSum

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="2"
    android:gravity="center_vertical"
    android:orientation="vertical" >

    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#FF0000">

    </RelativeLayout>

</LinearLayout>
于 2012-11-15T03:48:19.483 に答える
3

1つのRelativeLayoutにネストする必要が絶対にない場合は、他の人が指摘しているように、LinearLayoutでウェイトを使用できます。上下にRelativeLayoutを追加したので、必要に応じて画面の残りの部分を使用できます。そうでない場合は、他のRelativeLayoutsを削除してください。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/ParentLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="10" >

<RelativeLayout
    android:id="@+id/RelativeLayoutTop"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2.5"
    android:background="@color/torange" >
</RelativeLayout>

<RelativeLayout
    android:id="@+id/RelativeLayoutMid"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="5"
    android:background="@color/tpurple"
    android:padding="8dp" >

    <TextView
        android:id="@+id/description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/describe"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

<RelativeLayout
    android:id="@+id/RelativeLayoutBottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="2.5"
    android:background="@color/torange" >
</RelativeLayout>

于 2012-11-15T04:11:34.467 に答える
2

私は通常、これにLinearLayoutを使用して、重みを特定のパーセンテージに設定します。

<?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">

    <View
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="25"/>

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="50">
     </RelativeLayout>

     <View
         android:layout_width="fill_parent"
         android:layout_height="0dp"
         android:layout_weight="25"/>

</LinearLayout>

あなたの編集へ:

ある時点で、レイアウトを決定する必要があります。グループでレイアウトを取ることから始めます。パターンを探します。簡単な説明では、linearlayoutを使用して3つのオブジェクトを中央に1つグループ化する方法を考案しました。新しいレイアウトで、これらのアイテムを何らかの方法でグループ化できますか?

単純なレイアウトパターンを設定したら、重みを定義して、探している特定の間隔を追加します。次に、相対レイアウトを追加して、ビューを特定のビューに固定し始めることができます。それらが重なっているのか自問してみてください。1つのビューは、常に他のビューの上または側面に配置されますか?ビューの境界を定義し、線形レイアウト、重み、相対レイアウト、toLeftOf、toRightOf、以下、上、マージン、およびパディングを使用して、そこからビューを取得します。

これは、オブジェクトのようにグループ化することの意味の例です。それは決して最良の解決策ではありませんが、それはすべて、測位パラメータをどのように定義するかに依存します。

黄色=垂直線形レイアウト

緑=水平線形レイアウト

1つの大きな垂直レイアウトと2つの水平レイアウトがあり、その中に複数のオブジェクトがあります。そこから、そのレイアウト内での配置とアイテムの配置方法に関する部分を管理しやすいように分割できます。相対レイアウトを使用すると、別のオブジェクトを基準にしてアイテムを配置できるようになり、線形レイアウトで処理される作業の一部を削除できますが、他のオブジェクトとの相対距離を定義することになり、レイアウトを適切に調整するためにいじる必要がある場合があります。さまざまな画面サイズ(静的ポジショニングを使用しない理由)。

レイアウト

于 2012-11-15T03:49:51.977 に答える
1

たぶん、LinearLayout1、2、1に設定された3つのレイアウトを使用してみてくださいandroid:layout_weight

<?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" >

    <RelativeLayout
        android:background="#FF0000"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dip" >
    </RelativeLayout>

    <RelativeLayout
        android:background="#00FF00"
        android:layout_weight="2"
        android:layout_width="match_parent"
        android:layout_height="0dip" >
    </RelativeLayout>

    <RelativeLayout
        android:background="#FF0000"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dip" >
    </RelativeLayout>

</LinearLayout>
于 2012-11-15T03:46:12.853 に答える
0

RelativeLayout子供の幅と高さのパーセンテージはサポートしていません。属性とともに使用LinearLayoutandroid:layout_weightます。

于 2012-11-15T03:47:17.527 に答える