当用户按下我的textview时,我想将textview设为粗体。这就是我正在尝试的:
// styles.xml
<style name="TextOn">
<item name="android:textStyle">bold</item>
</style>
<style name="TextOff">
<item name="android:textStyle">normal</item>
</style>
// my_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true" style="@style/TextOn" />
<item android:state_focused="false" android:state_pressed="true" style="@style/TextOn" />
<item android:state_focused="true" style="@style/TextOn" />
<item android:state_focused="false" android:state_pressed="false" style="@style/TextOff" />
</selector>
// my textview in a layout
<TextView
...
android:duplicateParentState="true"
android:textAppearance="@drawable/my_selector" />
将textAppearance设置为选择器drawable似乎不正确,事实上,它没有任何效果。我们怎么做?
由于
答案 0 :(得分:1)
将样式选择器应用于样式仅适用于颜色和绘图。请在下面的帖子中查看答案。
答案 1 :(得分:0)
“选择器仅适用于绘图,而不适用于文本外观。目前还没有计划实现这一目标。” More Info
答案 2 :(得分:0)
正如Olele所说,你只能选择一个选择器来处理颜色和绘图,但是,你可以&#34;制作&#34;通过使TextView可单击并拦截代码上的触摸事件,在代码中使用自己的选择器。
事实证明这样的事情有效: TextView myTextView = (TextView) findViewById(R.id.my_text_view);
myTextView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
// When the user clicks the TextView
case MotionEvent.ACTION_DOWN:
mSwitchLayoutButton.setTypeface(Typeface.DEFAULT_BOLD);
break;
// When the user releases the TextView
case MotionEvent.ACTION_UP:
mSwitchLayoutButton.setTypeface(Typeface.DEFAULT);
break;
}
return false;
}
});