pea*_*mak 111 android selector
这是一个按钮选择器,当正常时它显示为红色,按下时它显示为灰色.
我想问一下如何进一步直接修改代码,以便在按下时文本大小和颜色也会发生变化?非常感谢!
<item android:state_pressed="true" >
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/black" />
<solid android:color="@color/grey"/>
<padding android:left="5dp" android:top="2dp"
android:right="5dp" android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="@color/black" />
<solid android:color="#FF6699"/>
<padding android:left="5dp" android:top="2dp"
android:right="5dp" android:bottom="2dp" />
<corners android:radius="5dp" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
Chi*_*hod 210
你只需要设置selector的button在你的布局文件.
<Button
android:id="@+id/button1"
android:background="@drawable/selector_xml_name"
android:layout_width="200dp"
android:layout_height="126dp"
android:text="Hello" />
Run Code Online (Sandbox Code Playgroud)
并做了.
编辑
以下是button_effect.xml目录中的drawable文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/numpad_button_bg_selected" android:state_selected="true"></item>
<item android:drawable="@drawable/numpad_button_bg_pressed" android:state_pressed="true"></item>
<item android:drawable="@drawable/numpad_button_bg_normal"></item>
</selector>
Run Code Online (Sandbox Code Playgroud)
在这里,你可以看到有3个drawables,你只需要将这个button_effect样式放在你的button上面,就像我上面写的那样.你只需要更换selector_xml_name用button_effect.
Tom*_*mik 25
使用状态列表drawable无法实现文本大小更改.要更改文本颜色和文本大小,请执行以下操作
文字颜色
要更改文本颜色,可以创建颜色状态列表资源.它将是位于res/color/目录中的单独资源.在布局xml中,您必须将其设置为android:textColor属性的值.然后颜色选择器将包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/text_pressed" />
<item android:color="@color/text_normal" />
</selector>
Run Code Online (Sandbox Code Playgroud)
字体大小
您无法使用资源更改文本的大小.没有"维度选择器".你必须在代码中做到这一点.并没有直接的解决方案.
可能最简单的解决方案可能是相应地利用View.onTouchListener()和处理上下事件.使用这样的东西:
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// change text size to the "pressed value"
return true;
case MotionEvent.ACTION_UP:
// change text size to the "normal value"
return true;
default:
return false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
另一种解决方案可能是扩展视图并覆盖该setPressed(Boolean)方法.当按下状态发生变化时,内部调用该方法.然后在方法调用中相应地更改文本的大小(不要忘记调用super).
nir*_*ola 13
在drawable文件夹中创建custom_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/unselected" android:state_pressed="true" />
<item android:drawable="@drawable/selected" />
</selector>
Run Code Online (Sandbox Code Playgroud)
在drawable文件夹中创建selected.xml形状
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp">
<solid android:color="@color/selected"/>
<padding />
<stroke android:color="#000" android:width="1dp"/>
<corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
在drawable文件夹中创建unselected.xml形状
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" android:padding="90dp">
<solid android:color="@color/unselected"/>
<padding />
<stroke android:color="#000" android:width="1dp"/>
<corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
在values文件夹的color.xml中为选定/未选定状态添加以下颜色
<color name="selected">#a8cf45</color>
<color name="unselected">#ff8cae3b</color>
Run Code Online (Sandbox Code Playgroud)
你可以从这里查看完整的解决方案
| 归档时间: |
|
| 查看次数: |
176772 次 |
| 最近记录: |