1. ホーム
  2. android

UI要素の位置・大きさを画面サイズに対する割合で設定する

2023-12-14 09:53:11

質問

私は、レイアウトを作成するときに、パーセントの位置やサイズを使用することが可能かどうかを調べようとしています。私が欲しいのはこのようなものです...

^
|
|
| 68%
|
|
v
Gallery (height equivalent of 16% total screen size)
^
| 16%
v

私は横向きで800x480の実ピクセルのディスプレイを持つデバイスでテストしており、現在以下のように強制しています...

<?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" > 
    <Gallery 
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="80px"
        android:layout_marginTop ="320px"
    />
</RelativeLayout>

明らかに、私はハードコードされた固定された px の単位をハードコードしたくないのは当然ですが、私は 68% または 0.68 に対して layout_marginTop (など)。を見てみると dp のユニットも見てみましたが、そのやり方もどうかと思います。

UIデザインは正直言って苦手なので、何かアドバイスがあればありがたいです。

EDITです。 もし誰かが同じような答えを探しているなら、将来の参考のために、アラン・ムーアの提案に従って、私は次のように正確に私が望むように動作しています...。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="@drawable/bground"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0.68"
        android:background="@android:color/transparent"
    />
    <Gallery 
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.16"
    />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0.16" 
        android:background="@android:color/transparent"
    />
</LinearLayout>

を使用する他の例を見つけることができました。 layout_weight を使用する他の例を見つけることができ、その例では TextView の高さを 0dp に変更し、さらにウェイトにfloatを使用しました。素晴らしい働きです :)

どのように解決するのですか?

android:layout_weightを設定することだと思います。

http://developer.android.com/resources/tutorials/views/hello-linearlayout.html

のようなものです(プレースホルダーとして上下にテキストビューを置いているだけです)。

  <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="68"/>
    <Gallery 
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="0dp"

        android:layout_weight="16"
    />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="16"/>

  </LinearLayout>