以编程方式更改按钮的样式值

时间:2016-01-29 21:32:24

标签: android android-layout android-studio

我为按钮enter image description here

创建了以下设计

使用

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:right="245dp">
        <shape android:shape="rectangle" >
            <corners android:radius="3dp" />
            <solid android:color="#000" />
        </shape>
    </item>

    <item android:left="0dp">
        <shape android:shape="rectangle" >
            <corners android:radius="3dp" />
            <solid android:color="#80000000" />
        </shape>
    </item>
</layer-list>`

我想要达到的目标是:enter image description here

一旦打开的片段完成(地址),+符号应该以'tick'的形式改变。如何使黑色矩形的不透明度降低?我仍然没有想出如何制作+符号,所以欢迎任何想法。

主要问题是:如何通过在android中使用代码来设置这些样式值?我想将第一项(245dp)的大小更改为按钮宽度的5%。

我的按钮布局:

<Button
        android:id="@+id/button8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_marginTopPercent="7%"
        app:layout_marginBottomPercent="6%"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        app:layout_widthPercent="50%"
        android:layout_below="@id/button7"
        android:background="@drawable/btnstyle"
        android:text="Create"
        android:textColor="#fff" />

和btnstyle定义如上。

1 个答案:

答案 0 :(得分:3)

假设后台 background.xml 放在drawables文件夹中。 你可以用这个 -

<LinearLayout android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="100dp"
                android:background="@drawable/background"
                android:orientation="horizontal">
    <ToggleButton
      style="?android:attr/borderlessButtonStyle"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_marginBottom="10dp"
      android:layout_marginLeft="20dp"
      android:layout_marginStart="20dp"
      android:layout_marginTop="10dp"
      android:checked="false"
      android:drawablePadding="80dp"
      android:drawableRight="@drawable/button_image"
      android:textColor="@android:color/white"
      android:textOff="Button1"
      android:textOn="Button1"/>

  </LinearLayout>

对于drawable button_image.xml ,这是代码 -

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/plus_img"/>
  <item android:state_checked="false" android:state_focused="false" android:drawable="@drawable/plus_img"/>
  <item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/tick_img"/>
  <item android:state_checked="true" android:state_focused="false" android:drawable="@drawable/tick_img"/>
</selector>

在toggleButton的clickListener上,您可以打开片段并将togglebutton的setChecked打开到!toggleButton.isChecked()。基本上像这样 - toggleButton.setChecked(!toggleButton.isChecked());

关于不透明度 在您编写的xml中,矩形中第一项的颜色采用 #RGB 格式。它也可以是 #ARGB ,其中'A'代表alpha。因此,如果设置A = 0,视图将是透明的,并且A = f,视图将是不透明的。