ボタンに境界線を追加する方法画像の使用に頼らずにこれを行うことは可能ですか?
ステップ1:my_button_bg.xmlという名前のファイルを作成します。
ステップ2:このファイルをres/drawables.xmlに配置します。
ステップ3:コードの下に挿入
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<gradient Android:startColor="#FFFFFF"
Android:endColor="#00FF00"
Android:angle="270" />
<corners Android:radius="3dp" />
<stroke Android:width="5px" Android:color="#000000" />
</shape>
ステップ4:必要に応じてコード "Android:background =" @ drawable/my_button_bg "を使用します。
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Your Text"
Android:background="@drawable/my_button_bg"
/>
あなたのdrawableフォルダにbutton_border.xml
ファイルを作成してください。
res/drawable/button_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<solid Android:color="#FFDA8200" />
<stroke
Android:width="3dp"
Android:color="#FFFF4917" />
</shape>
そして、あなたのXMLアクティビティレイアウトにボタンを追加して背景Android:background="@drawable/button_border"
を設定します。
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@drawable/button_border"
Android:text="Button Border" />
Android Official Solution
Android Design Support v28が導入されたので、 MaterialButton
を使用して境界付きボタンを簡単に作成できます。このクラスは、コンストラクタのボタンに更新されたMaterialスタイルを提供します。 app:strokeColor
とapp:strokeWidth
を使って、次のようにカスタムボーダーを作成できます。
build.gradle
dependencies {
implementation 'com.Android.support:design:28.0.0'
}
style.xml
アプリケーションのテーマがTheme.MaterialComponents
ではなくTheme.AppCompat
から継承されていることを確認してください。
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
•罫線付きボタン:
<Android.support.design.button.MaterialButton
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="MATERIAL BUTTON"
Android:textSize="15sp"
app:strokeColor="@color/green"
app:strokeWidth="2dp" />
•枠なしボタン:
<Android.support.design.button.MaterialButton
style="@style/Widget.AppCompat.Button.Borderless"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="UNFILLED MATERIAL BUTTON"
Android:textColor="@color/green"
Android:textSize="15sp"
app:backgroundTint="@color/transparent"
app:cornerRadius="8dp"
app:rippleColor="#33AAAAAA"
app:strokeColor="@color/green"
app:strokeWidth="2dp" />
描画可能図形の作成についてはこちらをご覧ください http://developer.Android.com/guide/topics/resources/drawable-resource.html#Shape
これが完了したら、ボタンセットのXMLでAndroid:background="@drawable/your_button_border"
drawable/button_green.xmlを作成します。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<gradient
Android:startColor="#003000"
Android:centerColor="#006000"
Android:endColor="#003000"
Android:angle="270" />
<corners Android:radius="5dp" />
<stroke Android:width="2px" Android:color="#007000" />
</shape>
そしてそれを@drawable/button_green
として指摘してください:
<Button
Android:id="@+id/button1"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_margin="10dp"
Android:background="@drawable/button_green"
Android:text="Button" />
ボタンに透明な背景が必要ない場合は、フレームレイアウトを使用して境界線のような錯覚を作り出すことができます。 FrameLayoutの "padding"属性を調整してボーダーの太さを変更するだけです。
<FrameLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:padding="1sp"
Android:background="#000000">
<Button
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="Your text goes here"
Android:background="@color/white"
Android:textColor="@color/black"
Android:padding="10sp"
/>
</FrameLayout>
シェイプXMLファイルに動的に編集可能な境界線の色があるかどうかわかりません。しかし、私はこの解決策では、FrameLayoutの背景を設定することによって境界の色を動的に変更できることを知っています。
私は1年近く遅れていることを知っていますが、あなたは9パスの画像を作成することもできます。このような画像の作成に役立つAndroid SDKに付属のツールがあります。このリンクを参照: http://developer.Android.com/ tools/help/draw9patch.html
シモンズ:画像も同様に無限に拡大縮小することができます
あなたのXMLレイアウトでは:
<Button
Android:id="@+id/cancelskill"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_marginLeft="25dp"
Android:layout_weight="1"
Android:background="@drawable/button_border"
Android:padding="10dp"
Android:text="Cancel"
Android:textAllCaps="false"
Android:textColor="#ffffff"
Android:textSize="20dp" />
描画可能フォルダに、ボタンの境界線スタイルのファイルを作成します。
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<stroke
Android:width="1dp"
Android:color="#f43f10" />
</shape>
そしてあなたの活動の中で:
GradientDrawable Gd1 = new GradientDrawable();
Gd1.setColor(0xFFF43F10); // Changes this drawbale to use a single color instead of a gradient
Gd1.setCornerRadius(5);
Gd1.setStroke(1, 0xFFF43F10);
cancelskill.setBackgroundDrawable(Gd1);
cancelskill.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelskill.setBackgroundColor(Color.parseColor("#ffffff"));
cancelskill.setTextColor(Color.parseColor("#f43f10"));
GradientDrawable Gd = new GradientDrawable();
Gd.setColor(0xFFFFFFFF); // Changes this drawbale to use a single color instead of a gradient
Gd.setCornerRadius(5);
Gd.setStroke(1, 0xFFF43F10);
cancelskill.setBackgroundDrawable(Gd);
finish();
}
});