Selector复杂例子——点击button 后显示不一样的样式
时间: 2023-11-10 11:05:29 浏览: 40
好的,让我来给你一个Selector复杂例子,实现点击button后显示不一样的样式。
首先,我们需要定义两种不同的样式,一种是未选中状态下的样式,另一种是选中状态下的样式。我们可以使用XML文件来定义这两种样式。比如,我们创建一个名为`button_bg.xml`的XML文件,内容如下:
```xml
<!-- 未选中状态下的样式 -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/bg_normal" android:state_pressed="false" />
<item android:drawable="@drawable/bg_pressed" android:state_pressed="true" />
</selector>
```
在这个XML文件中,我们使用了`selector`元素来定义两个`item`元素,分别表示未选中状态下和选中状态下的样式。每个`item`元素中都定义了一个`android:drawable`属性,表示该状态下应该显示的样式。我们在未选中状态下使用`bg_normal`来表示普通状态下的样式,在选中状态下使用`bg_pressed`来表示按下状态下的样式。
接下来,我们在我们的布局文件中使用这个XML文件来设置button的背景。比如:
```xml
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:text="Click me!" />
```
这个button的背景就会根据它的选中状态来显示不同的样式了。例如,当用户点击button时,它的背景就会变成`bg_pressed`,当用户松开button时,它的背景就会变成`bg_normal`。
最后,我们需要在代码中设置button的选中状态。我们可以在button的点击事件中通过代码来实现。比如:
```java
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 切换button的选中状态
button.setSelected(!button.isSelected());
}
});
```
在这个代码中,我们使用`setSelected()`方法来切换button的选中状态。当button被选中时,它的背景就会变成`bg_pressed`,反之,则为`bg_normal`。