3

ボタンがクリックされたときにボタンに境界線を追加する必要があり、ボタンの背景(リモートで取得するため、使用できないR.drawable.pictureなど)がそのままである必要があります。

つまり、クリックすると、(カスタム背景) ボタンに境界線を追加したいと考えています。

どうすればいいですか?境界線、ボタン、形状、セレクターなどに関する多くのページと質問を読みましたが、それらの大部分はxmlに関係していますが、アプリケーションを開始する前にボタンの背景を持っていないため、私は.プログラムで境界線を追加および削除することにバインドされています。繰り返しますが、カスタム ボタンの背景を保持する必要がありますが、onclick の小さな境界線を追加します。

注: サイズの異なるすべてのボタンでこれを使用します。したがって、ドローアブルを適用することは現実的な選択肢ではありません。クリックされたボタンの周りに長方形を描くことに縛られていると思います。

注 2: 繰り返しますが、適用する必要がある背景があります。境界線は、onclick イベントの小さな指標にすぎません。だから、背景がある種のセレクターであることをXMLに入れることはできません

4

3 に答える 3

5

Btn.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
    <shape>
        <solid
            android:color="#343434" />
        <stroke
            android:width="1dp"
            android:color="#171717" />
        <corners
            android:radius="3dp" />
        <padding
            android:left="5dp"
            android:top="5dp"
            android:right="5dp"
            android:bottom="5dp" />
    </shape>
</item>
<item>
    <shape>
        <gradient
            android:startColor="#343434"
            android:endColor="#275296"
            android:angle="270" />
        <stroke
            android:width="0dp"
            android:color="#171717" />
        <corners
            android:radius="4dp" />
        <padding
            android:left="5dp"
            android:top="5dp"
            android:right="5dp"
            android:bottom="5dp" />
    </shape>
</item>
</selector>

ここで、ストローク属性は、クリックするとボタンの境界線として表示されます。

これを drawable フォルダーに保存します。以下のように使用します

<Button 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/btn"
    android:textColor="@color/white"
    android:text="Button"/>
于 2012-09-18T10:01:00.080 に答える
0

9.png透明な領域の周りに黒い境界線だけを付けてみることができます。これは、セレクターを使用して、ボタンの「押された」状態で適用できます。

于 2012-09-18T09:57:55.953 に答える
0

xmlでlayer_listを2つのレイヤーで定義できます。1つは画像用、もう1つは境界線用で、このレイヤーリストをボタンの押された状態のドローアブルとして使用します。

于 2012-09-18T09:59:10.930 に答える