按下时自动更改按钮背景和文本外观(如iOS)?

hzx*_*zxu 5 android pressed shadow states android-button

在iOS中,如果我将按钮的背景设置为图像,当我按下按钮时,按钮的全部内容(包括文本)将被遮蔽.我可以在Android中实现相同的效果,还是必须为不同的状态使用不同的图像?此外,即使我为不同的状态使用不同的图像,如何使文本也被遮蔽?一种肮脏的方式是OnClickListener将按钮设置为按钮并按下时以编程方式遮蔽文本,但还有其他方法吗?

小智 7

我一直试图找到一个解决方案,但现在找不到任何东西,所以我想出了一个非常整洁的解决方案,适用于所有图像按钮.就像iOS一样.

  • 创建黑色,10%透明图像并将其另存为PNG.我叫它button_pressed.png.您可以使用此图片,http://img84.imageshack.us/img84/7924/buttonpressed.png

  • 创建一个名为相关的drawable,我称之为"button_pressed_layout.xml"

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android=" http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@drawable/button_pressed"  />
    </selector>
    
    Run Code Online (Sandbox Code Playgroud)
  • 现在将您的按钮图像放在LinearLayout中,然后将Button放在LinearLayout中.在Button中使用button_pressed_layout.xml作为背景.

        <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/button_image">
            <Button
                android:id="@+id/myButtonId"
                android:text="@string/Continue"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:background="@drawable/button_pressed_layout"
                android:textColor="#FFF"
                android:textSize="16dp" >                   
            </Button>
        </LinearLayout>
    
    Run Code Online (Sandbox Code Playgroud)

而已!