2012-01-02 10 views
5

ボタンをクリックすると、複数のボタンが表示される、複数のボタンがユーザーに表示されるインターフェースを作成しようとしています。私はこの目的のためにSlidingDrawerを使用しています。Android layout_width&layout_height、それはどのように動作しますか?

よく、私はlayout_width & layout_heightプロパティで混乱しています。

以下のようなプロパティを設定すると、「ハンドル1」だけが画面に表示されます。

android:layout_width="fill_parent" android:layout_height="wrap_content" 

正直言って、私はこれらの両方の特性について十分な知識がありません。 誰かが彼についての知識を共有できますか?

main.xml:ビューの

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

    <SlidingDrawer android:id="@+id/slidingDrawer1" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" 
      android:handle="@+id/handle1" 
      android:content="@+id/content1"> 
       <Button android:text="Handle 1" android:layout_height="wrap_content" 
         android:layout_width="fill_parent" android:id="@+id/handle1"></Button> 
       <LinearLayout android:id="@+id/content1" 
         android:layout_width="fill_parent" android:layout_height="wrap_content" 
         android:orientation="vertical" android:gravity="center" 
         android:background="#FF444444"> 
         <Button android:text="Handle 1 Item 1" android:layout_height="wrap_content" 
           android:layout_width="wrap_content" android:id="@+id/item1"></Button> 
       </LinearLayout> 
    </SlidingDrawer> 

    <SlidingDrawer android:id="@+id/slidingDrawer2" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" 
      android:handle="@+id/handle2" 
      android:content="@+id/content2"> 
       <Button android:text="Handle 2" android:layout_height="wrap_content" 
         android:layout_width="fill_parent" android:id="@+id/handle2"></Button> 
       <LinearLayout android:id="@+id/content2" 
         android:layout_width="fill_parent" android:layout_height="wrap_content" 
         android:orientation="vertical" android:gravity="center" 
         android:background="#FF444444"> 
         <Button android:text="Handle 2 Item 1" android:layout_height="wrap_content" 
           android:layout_width="wrap_content" android:id="@+id/item2"></Button> 
       </LinearLayout> 
    </SlidingDrawer>  
</LinearLayout> 
+5

を助けるかもしれないあなたは[ドキュメント](HTTP点検した://をdeveloper.android.com/reference/android/view/ViewGroup.LayoutParams.html#FILL_PARENT)?それはかなり明白です。 –

+1

良い質問です。数ヶ月前に私が最初に始めたとき、私はこれについて混乱しました。それは数日を与えると、あなたはそれのハングを取得します。 – Reid

答えて

5

layout_widthlayout_height特性は、親コンテナによって使用されることが意図されます。一部のコンテナは、これらのいずれかまたは両方を無視します。最も彼らを敬う。値の使用方法を理解するには、コンテナのドキュメント(あなたの場合はSlidingDrawer)を参照する必要があります。

完全なmain.xmlは表示されないので、何が問題になるのか正確に言うのは難しいです。何が間違っているのかをあなたが投稿した場合にも役立ちます。

EDIT

あなたの完全なレイアウトを見た後、私はここでの基本的な問題は、あなたがSlidingDrawersを格納するのLinearLayoutを使用していることだと思います。 docs for SlidingDrawerは、FrameLayoutまたはRelativeLayout(実際には、複数のビューを互いに重ね合わせることができるコンテナ)にする必要があります。

もう1つの可能性は、2番目のSlidingDrawerが最初のSlidingDrawerのすぐ下に配置されていることです。 2番目のボタンのサイズを変更して(たとえば、テキストを長くするなど)、ボタン1のどちらかの側でポーズアウトするかどうかを確認してください。

+0

私は完全なmain.xmlを提供しました、私の質問を参照してください。 –

+0

@YaqubAhmad - 私は自分の答えを更新しました。 –

+0

大変ありがとうございます。それを確認させて。 –

4

fill_parent = match_parentこれは幅「親」コンテナ

wrap_contentのプロパティ、それは次のように指定されている)は、高さや幅が「子」

があなたの代わりにmatch_parentまたはwrap_contentを使用しての重みを使用したいの高さや幅を取ることを意味し典型的には。

ウェイトを使用するときは、幅を0dpに設定します。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/main" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 

    <LinearLayout 
    android:id="@+id/lowerLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="1.0" > 
      <LinearLayout 
      android:id="@+id/headerLayout" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:layout_weight=".7" > 
       <Button 
        android:id="@+id/previousMonthButton" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Previous" /> 

       <TextView 
        android:id="@+id/monthName" 
        android:layout_width="0dip" 
        android:layout_height="wrap_content" 
        android:text="Large Text" 
        android:layout_weight="1" 
        android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center_horizontal" /> 

       <Button 
        android:id="@+id/nextMonthButton" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Next" /> 

      </LinearLayout> 

      <LinearLayout 
      android:id="@+id/lowerLayout3" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:layout_weight=".3" > 

       <Button 
        android:id="@+id/addEvent" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 

      </LinearLayout> 

    </LinearLayout> 
    <LinearLayout 
    android:id="@+id/lowerLayout2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="1.0" > 

     <LinearLayout 
      android:id="@+id/monthView" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:layout_weight=".7" > 

     </LinearLayout> 

     <ListView 
      android:id="@+id/listView1" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight=".3" > 
     </ListView> 
    </LinearLayout> 

</LinearLayout> 
+0

は、私はこれを知っているが、上記のルールは、それが両方とも「1ハンドル」&「2ハンドル」示すべきで適用されている場合、なぜ単に「1ハンドル」見せている、私の提供のxmlを見てください。 –

+0

あなたは親を2回満たしています。レイアウトの幅をfill_parentに設定する代わりにウェイトを使用してみてください。また、fill_parentは非推奨です。代わりにmatch_parentを使用してください。私は自分の答えを編集したので、これの例を示すことができます。 – Reid

0

2つのスライディングドロワーを追加しようとしていると思います。

SlidingDrawerのサイズは、コンテンツが1回スライドして占有するスペースの量を定義します。したがって、SlidingDrawerは通常、両方のディメンションにmatch_parentを使用する必要があります。

最初のSlidingDrawerの表示が「消えた」と設定すると、その他のものが表示されます。

更新

こんにちは、

このコードを試してみてください、それはあなたに

<?xml version="1.0" encoding="utf-8"?> 

<SlidingDrawer 
    android:id="@+id/slidingDrawer1" 
    android:layout_width="fill_parent" 
    android:layout_height="0dip" 
    android:layout_weight="1" 
    android:content="@+id/content1" 
    android:handle="@+id/handle1" > 

    <Button 
     android:id="@+id/handle1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Handle 1" > 
    </Button> 

    <LinearLayout 
     android:id="@+id/content1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#FF444444" 
     android:gravity="center" 
     android:orientation="vertical" > 

     <Button 
      android:id="@+id/item1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Handle 1 Item 1" > 
     </Button> 
    </LinearLayout> 
</SlidingDrawer> 
+0

はい私は、私の質問からはっきりしているように、複数の引出しを追加したいと思います。私が可視性をなくすように設定すると、最初のスライド式ドロワは見えなくなります。 –

+0

@YaqubAhmad最新の記事を確認... – loks

関連する問題