Android丸い角のボタン。ただし、丸い角(左下と右下)に沿って、周囲に不要な灰色の影があります。
私のコードは次のとおりです。
drawable/my_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
<shape Android:shape="rectangle">
<stroke Android:width="1dp" Android:color="#ffa6c575" />
<solid Android:color="#ffa6c575"/>
<corners Android:radius="15dp" />
</shape>
</item>
</selector>
次に、レイアウトxmlファイルには、次のものがあります。
<LinearLayout
<Button
Android:id="@+id/buy_button"
Android:layout_width="0dp"
Android:layout_weight="1"
Android:layout_height="35dp"
Android:layout_gravity="center"
Android:background="@drawable/my_button"
Android:textColor="@Android:color/white"
Android:text="BUY" />
<View
Android:layout_width="10dp"
Android:layout_height="match_parent"
Android:background="@Android:color/transparent" >
</View>
<Button
Android:id="@+id/sell_button"
Android:layout_width="0dp"
Android:layout_weight="1"
Android:layout_height="35dp"
Android:layout_gravity="center"
Android:background="@drawable/my_button"
Android:textColor="@Android:color/white"
Android:text="SELL" />
</LinearLayout>
1)丸い角(左下と右下)の周りの余分な灰色の影を取り除くにはどうすればよいですか?
2)ボタンにはデフォルトのリップル効果があります。デフォルトのリップル効果を維持するにはどうすればよいですか?
私は最終的に以下のコードでそれを解決しました。これにより、ボタンの角が丸くなります。また、Androidバージョン> = V21では、波及効果が使用されます。以前のAndroidバージョンでは、Android:state_pressed, Android:state_focused
など.
layout xml
ファイル:
<Button
style="?android:attr/borderlessButtonStyle"
Android:id="@+id/buy_button"
Android:layout_width="0dp"
Android:layout_weight="1"
Android:layout_height="match_parent"
Android:gravity="center"
Android:background="@drawable/green_trading_button_effect"
Android:textColor="@Android:color/white"
Android:text="BUY" />
ボタンonclickリップル効果(Android> = v21):
drawable-v21/green_trading_button_effect.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:color="@color/ripple_material_dark">
<item Android:id="@Android:id/mask">
<shape Android:shape="rectangle">
<solid Android:color="@Android:color/white" />
<corners Android:radius="5dp" />
</shape>
</item>
<item Android:drawable="@drawable/green_trading_button" />
</ripple>
以前のAndroidバージョンの場合、onclick中に背景色を変更するだけです。
drawable/green_trading_button_effect.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="true" Android:drawable="@drawable/green_trading_button_selected" />
<item Android:state_focused="true" Android:drawable="@drawable/green_trading_button_selected" />
<item Android:state_selected="true" Android:drawable="@drawable/green_trading_button_selected" />
<item Android:drawable="@drawable/green_trading_button" />
</selector>
drawable/green_trading_button.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="#ffa6c575"/>
<!-- rounded corners -->
<corners Android:radius="5dp" />
</shape>
drawable/green_trading_button_selected.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<solid Android:color="#ffc5dca8"/>
<!-- corners corners -->
<corners Android:radius="5dp" />
</shape>
drawable/ripple_circle.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@drawable/circle" Android:state_pressed="true">
<shape Android:shape="rectangle">
<corners Android:bottomLeftRadius="25dp" Android:bottomRightRadius="25dp" Android:topLeftRadius="25dp" Android:topRightRadius="25dp" />
</shape>
</item>
<item Android:drawable="@Android:color/transparent" />
</selector>
drawablev21/ripple_circle.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:color="@color/ripple_white">
<item Android:id="@Android:id/mask">
<shape Android:shape="rectangle">
<corners
Android:bottomLeftRadius="25dp"
Android:bottomRightRadius="25dp"
Android:topLeftRadius="25dp"
Android:topRightRadius="25dp" />
<solid Android:color="?android:colorAccent" />
</shape>
</item>
</ripple>
drawable/button_circle_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<corners
Android:bottomRightRadius="25dp"
Android:topRightRadius="25dp"
Android:bottomLeftRadius="25dp"
Android:topLeftRadius="25dp"/>
<solid Android:color="@color/colorAccent" />
</shape>
drawable/circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<corners
Android:bottomRightRadius="25dp"
Android:topRightRadius="25dp"
Android:bottomLeftRadius="25dp"
Android:topLeftRadius="25dp"/>
<solid Android:color="@color/ripple_white" />
</shape>
スタイルとリップルをボタンに設定する
<Button
Android:id="@+id/choose_folder"
style="@style/Base.Widget.AppCompat.Button.Borderless"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_margin="8dp"
Android:background="@drawable/button_circle_background"
Android:foreground="@drawable/ripple_circle"
Android:text="Chose Folder"
Android:textColor="@Android:color/white" />
link に触発された
これは、丸い角のある形状で影のないボタンに完璧な丸い角リップル効果を追加します
Xmlでこれを設定してみてください。これは私のために働いた。
style="?android:attr/borderlessButtonStyle"
また、APIレベル21以上をターゲットにしている場合は、
Android:stateListAnimator="@null"
このリンクにはさらに回答があります ボタンの影を削除する方法(Android)
描画可能なファイルで、次のようなファイルを作成します。
button_background.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<corners
Android:bottomRightRadius="15dp"
Android:topRightRadius="15dp"
Android:bottomLeftRadius="15dp"
Android:topLeftRadius="15dp"/>
<solid Android:color="@color/blue_500" />
</shape>
半径を大きくして、より湾曲させます。
また、ボタンのXMLで、上部のように作成したボタンと背景に境界線のないスタイルを指定します。
<Button
Android:id="@+id/task_action_btn"
style="@style/Base.Widget.AppCompat.Button.Borderless"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:background="@drawable/button_background"
Android:textAppearance="@style/Base.TextAppearance.AppCompat.Body1"
Android:textColor="@Android:color/white" />
コードでこれを試してください
Button buyButton = (Button) findViewById(R.id.buy_button);
Button sellButton = (Button) findViewById(R.id.sell_button);
hideShadow(buyButton);
hideShadow(sellButton);
public void hideShadow(Button button) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
button.setElevation(0);
}
}