概要:ImageButtonの水平方向の行を、画面サイズに合わせて均等に縮小したい。
画面の上部にImageButtonの行があります。さまざまなアクションのために、左揃えのロゴImageButton、次に右揃えのImageButton。
はい、それはHoneycomb / ICSアクションバーのように聞こえますが、コードはFroyoを対象としているため、2.2互換のレイアウトでデザインを実装する必要があります。
プログラムで7インチ以上の画面を表示し、ImageButtonの大きな画像に切り替えます(drawable-xlargeディレクトリは10インチ以上でのみ機能し、drawable-largeは4インチ以上で機能するため)。
これは、携帯電話や10インチのタブレットでうまく機能します。ただし、7インチのタブレットでは、画像が大きすぎてポートレートモードのスペースには収まりません(アプリはポートレートモードにロックされています)。
7インチのタブレットだけに別の画像セットを使用したくないので、画像を縮小するためにさまざまなアプローチを試しました。しかし、画像の間隔が適切でないか、異なるレベルで拡大縮小されているか、一部の画像しか使用されていません。画面に画像が表示されます。RelativeLayout、LinearLayout、android:weightSumを使用して、画像を背景画像、src画像などに設定しました。
編集:実験で気付いたもう1つの癖は、同じlayout_weightを設定すると、レイアウトが機能し、各アイテムの幅が同じになることでした。一部のアイテムの幅を変えたい場合(この場合、最初のボタンを大幅に広くする必要があるため必要です)、他のアイテムと一致しないlayout_weightを設定すると、レイアウトが壊れます。画面に表示されるアイテムは1つか2つだけで、残りは押し出されていると考えられます。
これが私が使用しているレイアウトです。これはこれまでのところ私の最高です。10インチのタブレットや携帯電話でうまく機能し、7インチのタブレットでもほとんど耐えられます。ただし、ロゴ(ボタンと同じ高さで約2.5倍の幅)は、他のボタンよりも著しく高くなっています。レイアウトを改善するための提案はありますか?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/actionBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:padding="5dip"
android:gravity="center_vertical"
android:orientation="horizontal"
android:background="@drawable/action_bar_bg"
>
<ImageButton
android:id="@+id/logoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/save_logo_03"
android:padding="2dip"
android:adjustViewBounds="true"
android:scaleType="centerInside"
/>
<View
android:id="@+id/spacer"
android:layout_width="50dip"
android:layout_height="1dip"
android:layout_weight="1"
android:visibility="invisible"
/>
<ImageButton
android:id="@+id/listButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/list_button"
android:background="@null"
android:adjustViewBounds="true"
android:padding="2dip"
android:scaleType="centerInside"
/>
<ImageButton
android:id="@+id/mapButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/map_button2"
android:adjustViewBounds="true"
android:padding="2dip"
android:scaleType="centerInside"
/>
<ImageButton
android:id="@+id/ltoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/lto_button"
android:adjustViewBounds="true"
android:padding="2dip"
android:scaleType="centerInside"
/>
<ImageButton
android:id="@+id/searchButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:src="@drawable/search_button"
android:adjustViewBounds="true"
android:padding="2dip"
android:scaleType="centerInside"
/>
</LinearLayout>