9

私は現在、4 つの画像が存在し、2 つの LinearLayouts がそれぞれ 2 つの画像で隣り合っている横画面の特別な xml レイアウトを実行しています。私が呼び出すこれらの LinearLayoutslinearLayout1linearLayout2.

linearLayout1青い長方形でマークされています:

linearLayout1

linearLayout2青い長方形でマークされています:

linearLayout2

ご覧のとおり、最初のものは画面の約 80% を使用し、2 つ目は残りを使用しています。もちろん、これは必要ありません。それぞれに 50% が必要です。layout_weightLinearLayouts 自体 (2 つの画像の配置) で既に使用されており、ネストされた重みがパフォーマンスに悪いため、使用できません。

私はさまざまなバリエーションを試しましたが、2 つの LinearLayouts をそれぞれ画面の 50% にすることはできません。コードは次のとおりです。

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

<LinearLayout
    android:id="@+id/title_container"
    style="@style/TitleBar" >

    <ImageView
        style="@style/TitleBarLogo"
        android:contentDescription="@string/imgViewDesc"
        android:src="@drawable/title_logo" />

    <ImageView
        style="@style/TitleBarSeparator"
        android:contentDescription="@string/imgViewDesc" />

    <TextView style="@style/TitleBarText" />

    <ImageButton
        style="@style/TitleBarAction"
        android:contentDescription="@string/imgViewDesc"
        android:onClick="onClickAbout"
        android:src="@drawable/title_about" />
</LinearLayout>

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/title_container"
    android:layout_above="@+id/mobFoxView" >

    <!-- LEFT COLUMN -->

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/mobFoxView"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/linearLayout2"
        android:background="@color/white"
        android:gravity="center"
        android:orientation="vertical"
        android:weightSum="2" >

        <ImageView
            android:id="@+id/imgNews"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:contentDescription="@string/imgViewDesc"
            android:onClick="onClickFeature"
            android:src="@drawable/front_news_1" />

        <ImageView
            android:id="@+id/imgReleases"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:contentDescription="@string/imgViewDesc"
            android:onClick="onClickFeature"
            android:src="@drawable/front_releases_1" />
    </LinearLayout>

    <!-- RIGHT COLUMN -->

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_above="@+id/mobFoxView"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@id/linearLayout1"
        android:background="@color/white"
        android:gravity="center"
        android:orientation="vertical"
        android:weightSum="2" >

        <ImageView
            android:id="@+id/imgArtists"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:contentDescription="@string/imgViewDesc"
            android:onClick="onClickFeature"
            android:src="@drawable/front_artists_1" />

        <ImageView
            android:id="@+id/imgLabels"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:contentDescription="@string/imgViewDesc"
            android:onClick="onClickFeature"
            android:src="@drawable/front_labels_1" />
    </LinearLayout>
</RelativeLayout>

<com.mobfox.sdk.MobFoxView
    android:id="@+id/mobFoxView"
    android:layout_width="fill_parent"
    android:layout_height="50dp"
    android:layout_alignParentBottom="true"
    mode="test"
    publisherId="@string/mobFoxID" />

</RelativeLayout>
4

4 に答える 4

26

さて、ここで利用できる 2 つのオプションがあります。

  1. そのLINT警告をねじ込み、とにかくネストされた重みを使用してください。電話は高速で、レイアウトを 1 回だけ (ほとんどの場合) インフレートするため、数ミリ秒の違いが生じます。ネストされたレイアウトを持つことは、インフレータがレイアウトを測定するためにより多くのパスを作成する必要があるため、パフォーマンスが低下するだけです。

  2. LinearLayoutを aと交換し、次のように 2 つの子を中央RelativeLayoutの見えないものに合わせます。View

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/top"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
      android:id="@+id/center_point"
      android:layout_width="0dp"
      android:layout_height="0dp"
      android:layout_centerInParent="true"/>

    <LinearLayout
      android:id="@+id/left_layout"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_alignParentLeft="true"
      android:layout_alignRight="@+id/center_point">
    </LinearLayout>


    <LinearLayout
      android:id="@+id/right_layout"
      android:orientation="horizontal" //default
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_alignParentRight="true"
      android:layout_alignLeft="@+id/center_point">
    </LinearLayout>

</RelativeLayout>
于 2012-05-10T17:45:14.123 に答える
0

layout_weight がなければ、これらの両方の linearlayout を親の linearlayout に入れます

<LinearLayout orientation:horizontal>
           <LinearLayout Child 1 />
           <LinearLayout Child 2 />
</LinearLayout>

これらの linearlayouts のコンテンツが同じサイズである場合、それらは同じサイズである必要があります。

そうでない場合は、まだ問題がある可能性があります

コードを使用してサイズを変更する必要がある場合があります

于 2012-05-10T17:36:13.390 に答える
0

意図した目的で機能を使用することを避けようとしている場合は、アプローチが理想的ではないかどうかを検討する必要があります...アイテムを行と列に配置しようとしているようです。を使用してみてくださいTableLayout

于 2012-05-10T17:32:44.267 に答える