android 中的按钮形状

Shape of button in android

我如何在 android 上设计这个按钮就像当有人点击我的按钮时右上角的绿色部分应该是可见的。 我知道 state_pressed 但我无法设计它。

在按钮视图的 xml 文件中只需添加

android:background="@drawable/capsule_shape"

根据需要命名可绘制文件并将以下代码添加到可绘制文件 xml 文件中

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners
        android:bottomLeftRadius="30dp"
        android:bottomRightRadius="30dp"
        android:radius="60dp"
        android:topLeftRadius="30dp"
        android:topRightRadius="30dp" />

    <solid android:color="#B3E5FC" />

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

    <size
        android:height="60dp"
        android:width="270dp" />

</shape>

注意:-这是胶囊状的,您可以根据自己的选择更改宽度或高度

你可以在这里看到图片

更新::: 我想在我的文本视图中添加一个可绘制的矢量,我将其设置为充当按钮

Drawable drawer_main = getResources().getDrawable(R.drawable.ic_keyboard_arrow_down_black_24dp);


Textview  txtCompanyName.setCompoundDrawablesWithIntrinsicBounds(null, null,drawer_main, null);

像在 xml 中为按钮添加文本视图背景,你会得到类似这样的东西,对于状态按下,你可以使用动画作为 onclick 侦听器来为文本视图中的可绘制对象设置动画以执行任何类型你想要的动画

上面的设计有很多种方法,我不知道哪种方法好,但它会按要求工作

这里我创建了两个可绘制的按钮半径形状,第二个是菱形,现在您将根据您的要求管理菱形视图的可见性,例如,如果按钮单击 visible/gone 菱形。

button_round_shape.xml

    <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid
        android:color="#545454" />
    <corners
        android:radius="15dp" />
</shape>

dimond_shape.xml

    <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:left="1dp"
    android:top="1dp"
    android:right="1dp"
    android:bottom="1dp">
    <rotate android:fromDegrees="45">
        <shape>
            <size
                android:width="5dp"
                android:height="5dp" />
            <gradient
                android:startColor="#4cd964"
                android:endColor="#4cd964" />

        </shape>
    </rotate>
</item>
</layer-list>

xml布局代码

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

     <RelativeLayout
         android:layout_centerInParent="true"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">

          <Button
              android:layout_width="wrap_content"
              android:id="@+id/btn"
              android:background="@drawable/button_round_shape"
              android:layout_height="wrap_content" />
          <Button
              android:id="@+id/btn_shape"
              android:layout_width="10dp"
              android:visibility="gone"
            android:layout_toRightOf="@+id/btn"
              android:background="@drawable/dimond_shape"
              android:layout_marginLeft="-25dp"
              android:layout_marginTop="7dp"
              android:layout_height="10dp" />
     </RelativeLayout>
</RelativeLayout>

JAVA代码

 btn.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // PRESSED

                btn_shape.setVisibility(View.VISIBLE);
                return true; // if you want to handle the touch event
            case MotionEvent.ACTION_UP:
                // RELEASED
                btn_shape.setVisibility(View.GONE);
                return true; // if you want to handle the touch event
        }
        return false;
    }
});