Android Studio - 在运行时更改按钮形状

时间:2016-12-26 17:16:07

标签: android android-layout runtime android-button shapes

我正在尝试在Android Studio中点击时将按钮更改为特定形状。

点击后按钮应该看起来像那样: illustration

底部三角形不需要点击。它的唯一目的是表明按钮下方有一个碎片。

最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

你走了:

定义ImageButton

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main3"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.ul_ts.emvsdktester.drawabletraining.Main3Activity">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/tributton" />

</RelativeLayout>

请注意,我已经给它一个背景&#34; @ drawable / tributton&#34;

在drawable forlder

中定义tributton.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/my_path" android:state_pressed="true" />
    <item android:drawable="@drawable/my_normal_path" />
</selector>

请注意,有两种状态,一种是按下按钮,另一种是其他状态。您可以根据需要更改状态。

在drawable文件夹

中创建my_path.xml
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="100dp"
    android:height="100dp"
    android:viewportHeight="100"
    android:viewportWidth="100">

    <path
        android:fillColor="#32c2b6"
        android:pathData="M0 0 L50 0 L50 50 L30 50 L25 60 L20 50 L0 50 Z"
        android:strokeColor="#9a1616" />

</vector>

在drawable文件夹

中创建my_normal_path.xml
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="100dp"
    android:height="100dp"
    android:viewportHeight="100"
    android:viewportWidth="100">

    <path
        android:fillColor="#d0ce5b"
        android:pathData="M0 0 L50 0 L50 50 L0 50 Z"
        android:strokeColor="#000000" />

</vector>

结果如下:

正常

enter image description here

已点击

enter image description here

答案 1 :(得分:0)

本文介绍如何使用XML形状创建三角形形状。

http://devdeeds.com/create-triangle-shape-using-xml-android/

您可以使用此形状将其相对于按钮(位于其下方)放置。首先将其隐藏,然后点击按钮使其可见。