0

ImageButtonがあり、ボタンをさまざまなサイズに拡大縮小したいのですが、これは画像が正しい選択ではないことを意味します。そのため、ソースとしてカスタムシェイプを使用したImageButtonを考えていました。

ボタンを次のように表示します。

ここに画像の説明を入力してください

私はこれから始めましたが、回転するもので立ち往生しました:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    
    <stroke
        android:width="2dp"
        android:color="@color/red" />
    <rotate
        android:fromDegrees="90"
        android:toDegrees="135" >
        <shape android:shape="line" >
            <stroke
                android:width="2dp"
                android:color="@color/red" >
            </stroke>
        </shape>
    </rotate>

    <padding
        android:bottom="7dp"
        android:left="7dp"
        android:right="7dp"
        android:top="7dp" />

</shape>

ただし、これは期待どおりに回転しません。多分私は完全に間違っていて、正しい方向にプッシュする必要があります。:-) ありがとう。

4

3 に答える 3

0

Bitmapを使用し、Bitmap.createScaledBitmap(...)メソッドを使用してニーズに応じてスケーリングすることを検討しましたか。次に、それをBitmapDrawableに簡単に変換し、(name-of-your-button).setBackgroundDrawable(nameOfBitmapDrawable);を使用して、このBitmapDrawableをボタンの背景として割り当てることができます。

したがって、あなたがしなければならないのは、その画像(あなたの投稿にあるもの)をドローアブル(おそらく透明なPNG)として保存し、そのドローアブルをビットマップに変換することだけです。そこから、上記で概説した手順に従う必要があります。お役に立てれば。

于 2012-07-10T10:04:01.883 に答える
0
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
             android:shape="rectangle"
             >
  <gradient android:angle="270"
            android:endColor="#000000"
            android:centerColor="#00ccff" 
            android:startColor="#000000"
           /> 
  <corners android:radius="5dp" /> 
  </shape>
Try this 
于 2012-07-10T14:21:03.130 に答える
0

カスタム実装でその問題を回避し、次のようなメソッドをButton上書きします。onDraw()

@Override
public void onDraw(Canvas canvas)
{
    width = getMeasuredWidth();
    height = getMeasuredHeight();

    // diagonal top left | bottom right
    canvas.drawLine(0, 0, width, height, mPaint);

    // diagonal top right | bottom left
    canvas.drawLine(width, 0, 0, height, mPaint);

    // horizontal top
    canvas.drawLine(0, 0, width, 0, mPaint);

    // horizontal bottom
    canvas.drawLine(0, height, width, height, mPaint);

    // vertical left
    canvas.drawLine(0, 0, 0, height, mPaint);

    //vertical right
    canvas.drawLine(width, 0, width, height, mPaint);
}

mPaintストロークしたい色やサイズなどに合わせて自分で設定する必要があります。

于 2012-07-17T08:22:48.773 に答える