2

私はボタンを持っていますが、背景色だけのテキストはありません。ボタンの場合、指定onClick()なしでボタンの境界線を設定する必要がありますxmldrawableボタンの背景にグラデーションの長方形を試してみましたが、レイアウトに柔軟性がありません。

ボタンに特定の色の境界線を設定するにはどうすればよいですか?

これが私のコードです。

    Button btnBlackColor=new Button(this);
    int mButtonWidth=100;
    btnBlackColor.setWidth(mButtonWidth);
    btnBlackColor.setHeight(mButtonWidth);
    btnBlackColor.setBackgroundColor(Color.BLACK);  

    btnBlackColor.setOnClickListener(new OnClickListener()
    {
      public void onClick(View v)
      {
        GradientDrawable btnShape = new GradientDrawable(Orientation.BOTTOM_TOP, new int[]{Color.BLUE,Color.LTGRAY});
        btnShape.setCornerRadius(0);
        btnShape.setSize(mButtonWidth, mButtonWidth);
        btnShape.setBounds(10, 10, mButtonWidth, mButtonWidth);
        ClipDrawable btnClip = new ClipDrawable(btnShape, Gravity.LEFT,ClipDrawable.HORIZONTAL);

        btnShape = new GradientDrawable(Orientation.BOTTOM_TOP, new int[]{Color.BLACK, Color.DKGRAY});
        btnShape.setCornerRadius(0); 
        btnShape.setSize(mButtonWidth, mButtonWidth);
        btnShape.setBounds(5, 5, mButtonWidth, mButtonWidth);


        LayerDrawable btnLayer= new LayerDrawable(new Drawable[]{btnShape, btnClip});

        btnBlackColor.setBackgroundDrawable(btnLayer); 
      }
    });
4

2 に答える 2

15

解決策が見つかりました。

    GradientDrawable drawable = new GradientDrawable();
    drawable.setShape(GradientDrawable.RECTANGLE);
    drawable.setStroke(5, Color.MAGENTA);
    drawable.setColor(Color.BLACK);
    btnBlackColor.setBackgroundDrawable(drawable);

これらの値を使用して、ボタンの背景を描画可能に設定します。これで、ボタンはマゼンタ色の境界線で表示されます。

于 2013-03-05T04:32:08.380 に答える
0

xmlバックグラウンドでセレクターを使用します。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"><!-- pressed -->
       <shape>...</shape>
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:state_hovered="true"
          android:drawable="@drawable/button_focused" /> <!-- hovered -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

バートンのすべての状態は形状である可能性があります。変更できるプロパティを確認してください。

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    <corners
        android:radius="integer"
        android:topLeftRadius="integer"
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />
    <gradient
        android:angle="integer"
        android:centerX="integer"
        android:centerY="integer"
        android:centerColor="integer"
        android:endColor="color"
        android:gradientRadius="integer"
        android:startColor="color"
        android:type=["linear" | "radial" | "sweep"]
        android:useLevel=["true" | "false"] />
    <padding
        android:left="integer"
        android:top="integer"
        android:right="integer"
        android:bottom="integer" />
    <size
        android:width="integer"
        android:height="integer" />
    <solid
        android:color="color" />
    <stroke
        android:width="integer"
        android:color="color"
        android:dashWidth="integer"
        android:dashGap="integer" />
</shape>

コードでは、を使用しStateListDrawableてセレクターを作成できます。形状については、DrawableShape次のリンクを参照してください。

http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html

http://developer.android.com/reference/android/graphics/drawable/ShapeDrawable.html

于 2013-03-03T16:43:52.580 に答える