171

アクティビティに 6 つの ImageButton があり、コードを使用して画像を設定します (xml を使用しません)。

ボタン領域の 75% をカバーするようにします。ただし、一部の画像はカバーする領域が狭いため、大きすぎて imageButton に収まらないものもあります。プログラムでサイズを変更して表示する方法は? 以下はスクリーンショットです

ここに画像の説明を入力 以下はxmlファイルです

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"     >
   <LinearLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">
        <ImageButton          

            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_topleft"
        android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"
            />
        <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_topright"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">

        <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_repeat"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"     
             />

              <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_next"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"     
             />

    </LinearLayout>    
   <LinearLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:orientation="horizontal">

        <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_bottomleft"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"                                 
             />
        <ImageButton
            android:layout_height="match_parent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:id="@+id/button_bottomright"
    android:layout_marginBottom="5sp"
        android:layout_marginLeft="2sp"
        android:layout_marginRight="5sp"
        android:layout_marginTop="0sp"                  
            />        
    </LinearLayout>        

</LinearLayout>

および myClass.java のスニペット:

public void addImageButtons()
    {
        iB_topleft = (ImageButton) findViewById(R.id.button_topleft);
        iB_topright = (ImageButton) findViewById(R.id.button_topright);
        iB_bottomleft = (ImageButton) findViewById(R.id.button_bottomleft);
        iB_bottomright = (ImageButton) findViewById(R.id.button_bottomright);
        iB_next = (ImageButton) findViewById(R.id.button_next);
        iB_repeat = (ImageButton) findViewById(R.id.button_repeat);
    }

    public void setImageNextAndRepeat()
    {

    iB_topleft .setImageResource(R.drawable.aa);
        iB_topright.setImageResource(R.drawable.bb);   

    iB_bottomleft.setImageResource(R.drawable.cc);
        iB_bottomright.setImageResource(R.drawable.dd);   

        iB_next.setImageResource(R.drawable.next);
        iB_repeat.setImageResource(R.drawable.repeat);      
    }
4

8 に答える 8

437

ボタン領域の75%をカバーしてほしい。

android:padding="20dp"(必要に応じてパディングを調整する)を使用して、画像がボタンに占める量を制御します。

ただし、一部の画像はカバーする領域が少ないため、一部の画像は大きすぎてimageButtonに収まりません。プログラムでサイズを変更して表示するにはどうすればよいですか?

を使用しandroid:scaleType="fitCenter"て、Androidで画像android:adjustViewBounds="true"をスケーリングし、スケーリングによって境界を調整します。

これらの属性はすべて、ImageButton実行時にそれぞれのコードで設定できます。ただし、私の意見では、xmlで設定およびプレビューする方がはるかに簡単です。

また、テキストサイズ以外には使用しないでください。ユーザーが設定したテキストサイズの設定に応じて拡大縮小されるため、ユーザーが「大きい」テキスト設定を使用している場合、サイズは意図したサイズよりも大きくなります。ユーザーのテキストサイズ設定によってスケーリングされないため、代わりに使用してください。spspdp

各ボタンの外観の抜粋は次のとおりです。

    <ImageButton
        android:id="@+id/button_topleft"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="0dp"
        android:layout_weight="1"
        android:adjustViewBounds="true"
        android:padding="20dp"
        android:scaleType="fitCenter" />

サンプルボタン

于 2013-02-27T16:44:34.147 に答える
37

次のコードを使用していますxml

android:adjustViewBounds="true"
android:scaleType="centerInside"
于 2015-11-17T11:31:34.370 に答える
10

android:scaleType="fitXY"i-Imagebutton xml で使用してみる

于 2013-02-27T16:48:49.067 に答える
8

android:scaleType="fitCenter"満足して使っています。

于 2015-11-12T13:26:43.563 に答える
-1

私の場合はうまくいきました。まず、画像をダウンロードしてアイコンイメージに名前を変更し、drawable フォルダーに配置します。android:layout_widthまたはでサイズを変更できますandroid:layout_height。最後に、

 <ImageButton
        android:id="@+id/answercall"
        android:layout_width="120dp"
        android:layout_height="80dp"
        android:src="@drawable/iconimage"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:scaleType="fitCenter" />
于 2016-08-20T08:17:56.973 に答える