9

画像ボタンを水平線形レイアウトで折り返す方法はありますか?または、次のことを行う他の方法はありますか?

6つの画像ボタンがあります。これらのボタンが次のような中解像度デバイスに表示されているとします。

Image button 1 | Image button 2 | Image button 3 | (1st row)

Image button 4 | Image button 5 | Image button 6 | (2nd row)

これらのボタンをタブレットまたは次のような高解像度デバイスに表示したい:

Image button 1 | Image button 2 | Image button 3 | Image button 4 | (1st row)

Image button 5 | Image button 6 |      (2nd row)

またはこのように:

Image button 1 | Image button 2 | Image button 3 | Image button 4 | Image button 5 | 
Image button 6 |

デバイスの画面によると。

これが私のメインのXMLファイルです。

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

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@layout/back2">


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@layout/back2">
<TextView
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="@layout/button5"
        android:gravity="center"
        android:orientation="vertical"
        android:text="@string/hello"
        android:textColor="#D5D5D5"
        android:textSize="20sp" />
<com.google.ads.AdView android:id="@+id/adView"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         ads:adUnitId="a150c75f96c352c"
                         ads:adSize="BANNER"

                         ads:loadAdOnCreate="true"/>

<org.core.mywindows8.FlowLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:f="http://schemas.android.com/apk/res/org.core.mywindows8"
f:horizontalSpacing="6dip"
f:verticalSpacing="12dip"
f:fitContent="true"

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

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
      android:background="@color/morange1"
        android:drawableTop="@drawable/tutorials"
        android:textColor="#ffffff"
        android:id="@+id/button1"
        android:paddingTop="16sp"
        android:drawablePadding="10sp"
        android:text="@string/tutorials"
/>
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    android:background="@color/mviolet"
        android:drawableTop="@drawable/themes"
        android:textColor="#ffffff"
        android:id="@+id/button2"
        android:paddingTop="16sp"
        android:drawablePadding="10sp"
        android:text="@string/themes"
        />
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
     android:background="@color/mblu2"
        android:drawableTop="@drawable/gadgets"
         android:textColor="#ffffff"
        android:id="@+id/button3"
        android:paddingTop="16sp"
        android:drawablePadding="10sp"
        android:text="@string/gadgets"/>
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
android:background="@color/mgree"
        android:drawableTop="@drawable/network"
        android:textColor="#ffffff"
        android:id="@+id/button4"
        android:paddingTop="16sp"

        android:drawablePadding="10sp"
       android:text="@string/networking"/>
<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    android:background="@color/mblu3"
        android:drawableTop="@drawable/search"
         android:textColor="#ffffff"
        android:id="@+id/button5"
        android:paddingTop="16sp"
        android:drawablePadding="10sp"
        android:text="@string/win8index"/>


 </org.core.mywindows8.FlowLayout>
</LinearLayout>
</ScrollView>
4

3 に答える 3

10

これにはFlowLayoutを使用できます。

これを確認してください

編集済み

必要なクラス、スタイル、属性を、私が提供したリンクからプロジェクトに追加します。そして、このレイアウトをレイアウトXMLに追加して使用します。


Gitプロジェクトで言及されています。Gitプロジェクトからプロジェクトにすべてのファイルをコピーします

XMLのLinearLayoutの代わりにユーザーFlowLayout

<com.yourpackage.FlowLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
>
</com.yourpackage.FlowLayout>

次に、そのFlowLayoutに子ビューを追加します。これはXMLのみ、または実行時に行うことができます。

サポートされているその他のパラメータは次のとおりです。

xmlns:f="http://schemas.android.com/apk/res/your.namespace"
f:horizontalSpacing="6dip"
f:verticalSpacing="12dip"
f:orientation="vertical"
f:layout_horizontalSpacing="32dip"
f:layout_verticalSpacing="32dip"

コンテンツを1行に収めるためのサポートを追加しました。私のgithubソースを入手してください

これを機能させるため。レイアウトのfitContentとしてもう1つの属性をtrueに指定する必要があります。

f:fitContent = "true"

コメントへの回答

f:verticalSpacing="12dip"-FlowLayout全体の垂直方向の間隔を指定するために使用されます。つまり、すべての子ビュー/ボタンには垂直方向の間隔があります。

 <org.apmem.tools.layouts.FlowLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        f:verticalSpacing="12dip"
    >

</org.apmem.tools.layouts.FlowLayout>

一方、重みを指定すると、子ボタンにf:layout_verticalSpacing="32dip"が指定されます。

<Button
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    f:layout_verticalSpacing="32dip"
>
</Button>
于 2013-01-02T04:45:13.117 に答える
0

通常、さまざまな構成の代替レイアウトXMLファイルを作成します。setContentView()これらの各フォルダーには、同じ名前(アクティビティーを呼び出すときに使用するもの)のxmlファイルがあります。

/res/layout/
/res/layout-sw600dp/
/res/layout-sw720dp/

プロジェクトにこれらのフォルダーがない場合は、先に進んで自分で作成できます。これは、実行時に、密度に依存しないピクセルでのデバイスの利用可能な最小幅に基づいて、これら3つのレイアウトのいずれかが使用されることをシステムに通知します。sw600dp7インチタブレットのような「大画面」を指定する場合に推奨されます。sw720dp10インチタブレットのような「xlargescreens」を指定する場合に推奨されます。これらの番号は任意です。

Vivek KhandelwalがFlowLayout実装を使用して提案したように行うこともできますが、それは希望どおりに機能する場合と機能しない場合があります。

于 2013-01-02T04:55:23.627 に答える
0

シンプルで比較的簡潔なソリューションの詳細をここに投稿しました:

https://stackoverflow.com/a/23228213/2162226


まとめ

于 2014-04-22T19:21:39.920 に答える