Как масштабировать объект макета Android во время выполнения? - PullRequest
1 голос
/ 07 апреля 2011

Я хочу установить ширину LinearLayout равной половине ширины экрана динамически в моей инициализации пользовательского интерфейса.У меня есть RelativeLayout, обернутый вокруг LinearLayout, иерархия следующая:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical" 
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" >

      <LinearLayout 
            android:id="@+id/left_linear_layout" 
            android:layout_alignParentLeft="true" 
            android:layout_height="fill_parent" 
            android:layout_width="155dp" <!--want to set this to 1/2 screen width-->
            android:orientation="vertical">
            ...
      </LinearLayout>
      <LinearLayout
            android:id="@+id/right_linear_layout" 
            android:layout_alignParentRight="true" 
            android:layout_height="fill_parent" 
            android:layout_width="385dp"><!--want to set this relative to screen width as well-->
            ....
       </LinearLayout>
</RelativeLayout>

В качестве альтернативы, можно ли решить эту проблему с помощью View вместо Layout?Любое предложение приветствуется!

Ответы [ 2 ]

0 голосов
/ 07 апреля 2011

Вы можете сделать это, используя layout_weight, но вам нужно будет добавить некоторые невидимые виды для заполнения. Например, следующее сделает вашу верхнюю панель на половину ширины экрана:

<RelativeLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android">
        <LinearLayout 
                    android:id="@+id/left_linear_layout" 
                    android:layout_alignParentLeft="true" 
                    android:layout_height="fill_parent" 
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:orientation="vertical"
                    >
            ...
        </LinearLayout>
        <!-- need this view to fill the other half of the screen -->
        <View 
                    android:id="@+id/spacer" 
                    android:layout_toRightOf="@id/left_linear_layout" 
                    android:layout_height="fill_parent" 
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    />

    ....
</RelativeLayout>

Сумма, которую займет каждый просмотр, составляет layout_weight/total_layout_weight. В этом случае total_layout_weight = 1+1 = 2 и каждый вид имеет layout_weight, равный 1, поэтому каждый вид занимает 1/2 экрана.

0 голосов
/ 07 апреля 2011

Вы можете просто использовать LinearLayout в качестве макета верхнего уровня, а затем установить вес двух дочерних макетов.

...