2016-10-30 46 views
1

私は単純なアンドロイドアプリケーションの線形レイアウトに取り組んでいます。私は2つのビューの部分をサイズに基づいて動的に変更したいと考えています(私は左から右の行に対して最初の20%が空で、すべてのコンテンツが残りの80%の中にあります)。このアプローチでは、別のビューの重みを選択しました。私はこのアプローチのためにネストされた線形レイアウトを作成しました。たとえば、レイアウト階層は次のようなものです。このアプローチでLinearLayout%空白

<linearLayout> //parent layout 
    <linearLayout //child 1 layout 
     android:layout_weight="1"> 
     //so that this view occupy 20% of the space regardless the width of device. I intensionally wanna keep this view empty. 
    </linearLayout> 
    <linearLayout //child 2 layout 
     android:layout_weight="4"> 
      //so that this view occupy 80% of the space regardless the width of device. and 
      //inside this view I have whatever view I wanna add on it. 
     <EditText> 
     <ImageView> 
    </linearLayout> 
</linearLayout> 

、アンドロイドStudioのリントは私に次の警告を伝える:

  1. これは、ネストされたレイアウトです。レイアウトウェイトは、ウィジェットを2回測定する必要があります。ゼロ以外の値を持つLinearLayoutが、ゼロ以外の値を持つ別のLinearLayoutの内部にネストされている場合、測定回数は指数関数的に増加します。

  2. 子供1つのレイアウトは無用です:このLinearLayoutビューは無用である(子、ノーbackground、ノーid、ノーstyle

は、誰もが私のために使用する権利レイアウトに対処することはできませんデバイスのサイズに基づいて動的にレイアウトを変更するには?線形レイアウトの場合、空のスペースを正しく設定するにはどうすればよいですか?

答えて

2

これは、重みを用いて可能な解決策である:

<LinearLayout 
    android:layout_width="match_parent" 
    android:gravity="end" 
    android:weightSum="1"> 

    <!-- Your content here: --> 
    <View 
     android:layout_width="0dp" 
     android:layout_weight="0.8" 
     android:layout_gravity="end" /> 

</LinearLayout> 
+0

これは私が探しています正確に何です。ありがとう。 –