我想让用户在点击文本字段时感觉就像我们点击按钮时一样,并且在释放按钮后,它会变成橙色,很短的时间会闪烁并再次成为它的第一种颜色。当我点击它时效果很好但没有出现颜色闪烁。
布局文件
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button5"
android:layout_below="@+id/button5"
android:layout_marginLeft="35dp"
android:layout_marginTop="28dp"
android:clickable="true"
android:onClick="onClick"
android:text="Click Me"
android:textAppearance="?android:attr/textAppearanceLarge" />
mainActivity Code
textV.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent("com.DRMS.help"));
}
});
答案 0 :(得分:3)
您可以使用OnTouchListener
,也可以使用选择器。
textV.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// change color
}
else if (event.getAction() == MotionEvent.ACTION_UP) {
// set to normal color
}
return true;
}
});
编辑:
您也可以使用选择器。边框和圆角矩形。自定义相同。
可绘制文件夹中的bkg.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/pressed" />
<item android:state_focused="false"
android:drawable="@drawable/normal" />
</selector>
drawable文件夹中的normal.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#0AECBF"/>
<stroke android:width="3dp"
android:color="#0FECFF" />
<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp"/>
<corners android:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"/>
</shape>
drawable文件夹中的pressed.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#ff33ffff" />
<padding android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp"/>
<corners android:bottomRightRadius="7dp"
android:bottomLeftRadius="7dp"
android:topLeftRadius="7dp"
android:topRightRadius="7dp"/>
</shape>
现在设置背景
android:background="@drawable/bkg"
答案 1 :(得分:0)
只需将选择器设置为背景可绘制。使用“selector”在drawable文件夹中创建一个新的Android xml文件:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<color android:color="@android:color/black" />
</item>
<item>
<color android:color="@android:color/white" />
</item>
</selector>
然后,在您的xml布局中,将其设置为Your textView:
android:background="@drawable/your_selector"
这只是一个糟糕的例子,你可以为不同的背景等创建shapes.xml。
答案 2 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_selected="true" android:drawable="#002233"/>
<item android:state_pressed="true" android:drawable="#112233"/>
<item android:drawable="#001122"></item>
</selector>
在布局文件夹中创建一个xml文件(比如text_bkgrnd),在其中添加上面的代码。
现在在main.xml中将textView的background属性设置为创建的xml文件
希望这会有所帮助。根据需要更改状态的哈希值
答案 3 :(得分:0)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<solid
android:color="#61ab69" />
<stroke
android:width="1dp"
android:color="#53933f" />
<corners
android:radius="3dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#009933"
android:endColor="#00bf33"
android:angle="270" />
<stroke
android:width="1dp"
android:color="#53933f" />
<corners
android:radius="3dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
</selector>
将其保存为drawable文件夹中的btnclick.xml 并将其用作
android:background="@drawable/btnclick
在该文字视图中
它会正常工作
答案 4 :(得分:0)
您可以尝试设置onTouchListener。像这样的东西
myButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
// Change your color here
return true;
}
return false;
}
});
onTouchListener应该在onClickListener
之前触发答案 5 :(得分:0)
属性
android:background="@drawable/focus_color.xml"
// focus_color.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/gradient_focus"
/> <!--pressed -->
<item
android:state_focused="true"
android:drawable="@drawable/gradient_titlebar"
/> <!-- focused -->
<item
android:drawable="@drawable/gradient_paint"
/> <!-- default -->
</selector>
// gradient_focus.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient
android:angle="90"
android:endColor="#FFFFFF"
android:startColor="#e8ebef"
android:type="linear" />
<stroke
android:width="0.3dp"
android:color="#000000" />
<corners android:radius="0.5dp" />
</shape>
// gradient_titlebar.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#E2EEFC"
android:endColor="#BFCBD9"
android:type="linear"
android:angle="90"/>
<corners android:radius="2dp" />
</shape>
// gradient_paint.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#94D7F2"
android:endColor="#65A2DB"
android:type="linear"
android:angle="90"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp"/>
<corners android:radius="2dp"/>
</shape>