Android:使用 xml 定义制作一个三角形的按钮(可绘制) [英] Android: Make a button with triangle shape using xml definitions (drawable)

查看:11
本文介绍了Android:使用 xml 定义制作一个三角形的按钮(可绘制)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过使用 XML 定义使用按钮 (TextView) 创建它:

I want create this using button (TextView) by using XML definiton:

在我拥有的 Activity 布局中:

In layout of the Activity I have:

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button_arrow" <!-- I NEED IMPLEMENT THIS -->
        android:clickable="true"
        android:drawablePadding="7dp"
        android:gravity="center"
        android:drawableLeft="@drawable/music_cloud"
        android:onClick="exportSong"
        android:padding="20dp"
        android:text="@string/export_upload"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/dark_yellow_text_color"
        android:textStyle="bold" />

我创建了几个帖子:

制作-a-triangle-shape-using-xml-definitions

Android 三角形(箭头)定义为 XML 形状

Android - 使用 xml 制作箭头形状

我尝试修改了几个 XML 定义,但没有什么好的.有没有一些简单的方法来实现这个形状?它还应该有一个透明的背景.

I tried modify several XML definition but nothing was good. Is there some easy way how to implement this shape? Also it should have a transparent background.

推荐答案

如果有人对此仍有疑问:

If someone still has issues with this :

  1. xml:

  1. xml:

<item android:top="45dp">
    <shape>
        <size android:height="100dp" android:width="90dp"/>
        <solid android:color="@android:color/holo_orange_light" />
    </shape>
</item>
<item android:top="36dp" android:left="11dp">
    <rotate
        android:fromDegrees="45"
        android:toDegrees="0"
        android:pivotX="80%"
        android:pivotY="20%" >
        <shape>
            <size android:width="40dp"
                android:height="30dp"/>
            <stroke android:color="@android:color/holo_orange_light" android:width="1dp"/>
            <solid android:color="@android:color/holo_orange_light" />
        </shape>
    </rotate>
</item>
</layer-list>

  • 覆盖 TextView 并在你的布局中使用它:

  • override TextView and use it in your layout:

    public class CustomTextView extends TextView {
    
        private int mWidth;
        private int mHeight;
    
    
        public CustomTextView(Context context, AttributeSet attrs)  {
            super(context, attrs);
    
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
    
           super.onDraw(canvas);
            Paint mPaint = new Paint();
            int color = getResources().getColor(R.color.YourColor);
    
            mPaint.setColor(color);
            Path mPath = new Path();
            mPath.moveTo(.0f, this.getHeight());
            mPath.lineTo(0.8f * this.getWidth(), this.getHeight());
            mPath.lineTo(this.getWidth(), 0.5f * this.getHeight());
            mPath.lineTo(0.8f * this.getWidth(), .0f);
            mPath.lineTo(.0f, .0f);
            mPath.lineTo(.0f, this.getHeight());
    
            canvas.clipPath(mPath);
            canvas.drawPath(mPath,mPaint);
    
    
        }
    }
    

  • 关于 xml 示例:有两个矩形重叠.您必须经常使用这些值,这使得在不同的视图上使用变得困难.我认为在这种情况下使用自定义视图是最好的解决方案.

    Regarding the xml example: there are two rectangles overlapping.You have to play around with the values a lot and this makes it difficult to use on different views. I think using a custom view is the best solution in this case.

    这篇关于Android:使用 xml 定义制作一个三角形的按钮(可绘制)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆