7

私は次のことを達成したい:

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

次のレイアウトで動作します。

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

    <LinearLayout
        android:layout_weight="3"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <fragment 
            android:name="com.bobjohn.DetailsMenuFragment"
            android:id="@+id/detailsMenuFragment"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="6"
            />

        <fragment 
            android:name="com.bobjohn.SummaryFragment"
            android:id="@+id/summaryFragment"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_margin="10dp"
            android:layout_weight="4"/>
    </LinearLayout>

    <TextView 
        android:layout_width="0dp"
        android:layout_weight="7"
        android:layout_height="fill_parent"
        android:text="Test Text"/>
</LinearLayout>

ただし、ネストされた重みがパフォーマンスに悪影響を与えるという警告が表示されます。エラーは理解できますが、このレイアウトを別の方法で表現する方法がわかりません。代替手段は何ですか?

4

3 に答える 3

7

SUPPORTLibsに新しいアップデートがあります。AcceptedAnswerもチェックしてください。

更新された回答:-

ビューを作成するたびに、画面上のビューの高さの幅を知るためにメジャーイベントが呼び出されます。WRAP_CONTENT、FILL_PARENT、またはFIXEDSIZEを使用せず、Weightsを使用している場合、画面にレイアウトをレンダリングするのはより複雑になります。

意味、

最初にメインレイアウトがレンダリングされ、それがメジャーと呼ばれます。次に、すべての子ビューが重みに基づいてそれをメジャーイベントと呼ぶため、ロードに時間がかかります。

したがって、重みのネストは避ける必要があります

ネストされた重みの代替:-

さまざまなサイズに固有のさまざまなレイアウトと描画可能なフォルダの使用を検討する必要があります。特定のheight-widthを使用してXMLにビューを書き込むか、wrap_contentにして特定の背景画像を使用するか、fill_parentにします。

開発者としては何度か間違っているかもしれませんが、作成者のAndroid(Lint)としてはまれにしか間違っていない可能性があるため、コードを改善するためにこれらの警告に耳を傾ける必要があります。


以下の回答は、Androidのレイアウトに関する知識が不足しているために書かれました

AFAIK、あなたは正しくやったと思います、これは同じために書かれた最高のXMLです。使用されるべきだったので、weight属性を完全に使用しました。警告を無視するだけです。

代替手段は何ですか?

私は自分のプロジェクトですべてのXMLを同じ方法でコーディングしたので、これが私にとって最良の代替手段でした。したがって、RelativeLayout 親レイアウトとして使用するまで、XMLをコーディングしてそのようなレイアウトを取得する他の代替手段はないと思います。子ビューの固定サイズの高さと幅。それでも、そのままにしておくことをお勧めします。


私はまだAndroidレイアウトを完全には知らないので、この回答を削除しましたが、新しいコメントを受け取り、これに基づいて回答するためにそれを維持します

于 2012-06-28T09:32:43.690 に答える
3

LinearLayout weightはい、Androidでネストするための代替手段がありますpercent support library

コードとコンセプトはこちら!

GitHubプロジェクトはこちら!

私が完全に重量特性を避けたこの単純なレイアウトを考えてみてくださいLinearLayout

パーセントサポートライブラリ

<android.support.percent.PercentRelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/fifty_huntv"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="#ff7acfff"
        android:text="20% - 50%"
        android:textColor="@android:color/white"
        app:layout_heightPercent="20%"
        app:layout_widthPercent="50%" />
    <TextView
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_toRightOf="@id/fifty_huntv"
        android:background="#ffff5566"
        android:text="80%-50%"
        app:layout_heightPercent="80%"
        app:layout_widthPercent="50%"
        />

</android.support.percent.PercentRelativeLayout>

本当にすごい!!!

于 2015-09-06T07:36:04.617 に答える
0

私は思う(そして私はおそらくこれに夢中になるだろう)が、私の電話はほとんどの人々の家庭用PCに匹敵する(完全に破壊しないとしても)クアッドコアプロセッサを持っていると思う。

また、このようなハードウェア機能は携帯電話の未来だと思います。

だから私は、あなたが入れ子に夢中にならない限り(MHOではレイアウトは4レベル以上の深さであってはならず、おそらくあなたが間違っているのであれば)、あなたの電話はあまり気にしないかもしれないという結論に達します重みを持つことについて。

パフォーマンスにはるかに大きな影響を与えることができる多くのことがあり、プロセッサが余分な計算を行うことを心配します。

(私は少しユーモラスなので、この投稿からあまり真剣に受け止めないように注意してください。それ以外の場合は、最初に最適化する必要がある他のことがあり、2〜3レベルの深さの重量を心配することは役に立ちません。あなたの健康)

于 2013-08-08T22:27:20.870 に答える