web-dev-qa-db-ja.com

Android layout_widthとlayout_height、どのように機能しますか?

2つ以上のボタンがユーザーに表示されるインターフェースを作成しようとしています。ボタンをクリックすると、いくつかのレイアウトがユーザーに表示されます。私はこの目的のためにSlidingDrawerを使用しています。

まあ、私は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>
6
Yaqub Ahmad

layout_widthおよびlayout_heightビューのプロパティは、その親コン​​テナによって使用されることを目的としています。一部のコンテナは、これらの一方または両方を無視します。ほとんどがそれらを尊重します。値がどのように使用されるかを理解するには、コンテナー(この場合はSlidingDrawer)のドキュメントを参照する必要があります。

Main.xml全体を表示していないため、何が問題になっているのかを正確に判断するのは困難です。何が悪いのかという画像を投稿した場合にも役立ちます。

[〜#〜]編集[〜#〜]

完全なレイアウトを見た後、ここでの基本的な問題は、LinearLayoutを使用してSlidingDrawersを格納していることだと思います。 SlidingDrawerのドキュメント に注意してください。これらは、FrameLayoutまたはRelativeLayout(実際には、複数のビューを互いに重ねることができるコンテナ)のいずれかにある必要があります。

もう1つの可能性は、2番目のSlidingDrawerが最初のSlidingDrawerの真下に配置されていることです。 2番目のボタンのサイズを変更して(テキストを長くするなど)、ボタン1のいずれかの側に突き出ているかどうかを確認します。

6
Ted Hopp

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>
4
Reid

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

SlidingDrawerのサイズは、スライドアウトされたときにコンテンツが占めるスペースの量を定義するため、SlidingDrawerは通常、両方のディメンションにmatch_parentを使用する必要があります。この場合、一方が他方にオーバーラップするため、ハンドラー2は表示されません。

最初のSlidingDrawerの可視性を「なくなった」ように設定すると、他の1つを見ることができます。

更新

こんにちは 、

このコードを試してみてください。

<?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
loks