2017-01-15 11 views
-1

私は、Androidについての本を読んでいると私はここで、ここでのLinearLayoutとレイアウトを使用して奇妙な行動:重量

こだわっているの命令は、次のとおりです。

  1. は、我々が最近作成した実際のUIプロジェクトを使用しますが、してみましょうレイアウトの完全な クリーンシートから始めてください。プロジェクト エクスプローラでレイアウトフォルダを右クリックします。ポップアップコンテキスト依存のオプションメニューから、[新規|新規作成]を選択します。 レイアウトリソースファイル。
  2. Root要素にLinearLayoutが選択されていることを確認してください。
  3. ファイルにlist_detail_layoutという名前を付け、次に[OK]を左クリックします。
  4. [プロパティ]ウィンドウで、デフォルトで提供されている LinearLayoutのorientationプロパティを見つけてhorizo​​ntalに変更します。
  5. LinearLayout(垂直)をデザインにドラッグします。体重性、及び の色に設定40に、その背景を、それを設定:
  6. すぐ
  7. がルートのLinearLayout内の最初の(垂直)のLinearLayoutを選択し、設計上(水平)のLinearLayoutをドラッグし、 そのレイアウトを見つけますバックグラウンドプロパティの楕円を見つけて左クリックすると、 が表示され、次に[カラー]タブを左クリックして色を選択します。
  8. ルートLinearLayout内の2番目の(水平)LinearLayoutを選択し、 レイアウト:weightプロパティを見つけて60に設定します。ここでは、2つの が明確に識別可能な領域を1つは40%、もう1つは60 %、 次に示すように:

Screen Shot enter image description here は、私はすべての手順に従ってください、私はまだ画像の結果を得ることはありません。これは私のXMLコードです:

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

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="40" 
     android:background="@android:color/holo_orange_light"></LinearLayout> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="60"></LinearLayout> 
</LinearLayout> 

私は「wrap_content」にlayout_widthの両方の値を変更した場合、それは動作しますが、本の中で言及されていない理由を私は知らない...

+0

をlayout_weightあなたはアンドロイドを持っているのいずれかを確認してくださいを重量合計を割り当てる必要があります。加重合計= 1の場合、その40%は親レイアウトのweight_sumを与えていない –

+0

です –

答えて

0

のようになります。両方のウィジェットに同じ値を与えても、必ずしも画面上で同じ幅になるとは限りません。子ビューの幅を決定するために、LinearLayoutはlayout_widthlayout_weightのパラメータを組み合わせて使用​​します。

LinearLayoutは、ビューの幅を設定する2つのパスを作成します。最初のパスでは、LinearLayoutはlayout_width(または垂直方向についてはlayout_height)です。両方のLinearLayoutの値がwrap_contentの場合、の値は、各ビューに描画するのに十分な領域だけが得られます。

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

<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_weight="40" 
    android:background="@android:color/holo_orange_light"></LinearLayout> 
<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_weight="60"></LinearLayout> 
</LinearLayout> 

私はあなたが初心者だと思います。UIデザインのための独自のコードを記述することは、ドラッグアンドドロップよりも優れています。

0

あなたはweightSumを使用する必要があります親に

それはandroid:layout_weight属性は、その子を配布する方法のLinearLayoutを伝え

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="match_parent 
    android:weightSum="100"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_weight="40" 
     android:background="@android:color/holo_orange_light"></LinearLayout> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_weight="60"></LinearLayout> 
</LinearLayout> 
+0

動作しません。最初のレイアウトは2番目のレイアウトよりも大きく見えます。アンドロイドの前に期間を割り当てる必要はありません。weightSum = "100"ビヘイビアが同じです pd:申し訳ありません。私の英語 –

+0

両方の子線形レイアウトのlayout_widthをwrap_contentに変更してみてください。 –

+0

はい、私はそれを言いました。しかし、本には何も言及されていないので、それは変です。 –

0

あなたはアンドロイドを使用している:親のLinearLayoutにweightSumセットまたはアンドロイド設定:layout_width = 0

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

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="40" 
     android:background="@android:color/holo_orange_light"> 
    </LinearLayout> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="60"> 
    </LinearLayout> 
</LinearLayout> 

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

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_weight="40" 
     android:background="@android:color/holo_orange_light"></LinearLayout> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_weight="60"></LinearLayout> 
</LinearLayout>