在android中按钮的形状

时间:2018-02-10 04:43:57

标签: android android-drawable

2 个答案:

答案 0 :(得分:0)

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

android:background="@drawable/capsule_shape"

将drawable文件命名为您想要的,并将以下代码添加到您的drawable 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>

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

您可以在此处查看图片enter image description here

已更新::: 我想在我的textview中添加一个vector drawable,我将其设置为按钮

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


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

添加textview背景,就像你在xml中为按钮所做的那样,你会得到类似这样的东西,对于状态按下你可以在onclick监听器上使用动画来动画textview中的drawable来做你想要的任何类型的动画

答案 1 :(得分:0)

上面有很多设计方法,我不知道它是一个好方法,但它可以按照要求工作

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

<强> 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;
    }
});