【发布时间】:2013-07-22 13:23:41
【问题描述】:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:orientation="vertical"
tools:context=".MainActivity" >
<LinearLayout
android:layout_width="0px"
android:layout_height="0px"
android:focusable="true"
android:focusableInTouchMode="true" />
<AutoCompleteTextView
android:id="@+id/autoComplete"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:background="@drawable/black_rounded_borders" />
</RelativeLayout>
我添加了无用的 LinearLayout 只是为了避免最初关注 Activity 启动时的 AutoCompleteTextView
drawable/black_rounded_borders.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#FFFFFFFF" />
<stroke
android:width="2dp"
android:color="@color/selector_black_border" />
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
</shape>
color/selector_black_border.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="#FF269ff5"/>
<item android:state_pressed="true" android:color="#FF269ff5"/>
<item android:state_selected="true" android:color="#FF269ff5"/>
<item android:state_focused="false" android:color="#FF000000"/>
<item android:state_pressed="false" android:color="#FF000000"/>
<item android:state_selected="false" android:color="#FF000000"/>
</selector>
活动
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
autoComplete = (AutoCompleteTextView) findViewById(R.id.autoComplete);
Log.d("hasFocus", autoComplete.hasFocus() + "");
Log.d("isSelected", autoComplete.isSelected() + "");
Log.d("isPressed", autoComplete.isPressed() + "");
//All the above are false
}
尽管所有与蓝色(#FF269ff5) 颜色相关的状态都是错误的。一世 仍然得到蓝色边框。另外,如果我更改顺序 color/selector_black_border.xml 文件中的状态,就像所有 false 首先是真的,然后我得到黑色边框。它就像只有 第一种颜色有效。
我错过了什么?
谢谢。
【问题讨论】:
-
您是否尝试将
android:focusable="true" android:focusableInTouchMode="true"添加到EditText 的父级(RelativeLayout) -
是的。这样我就可以避免这个额外的
LinearLayout。但最终的结果是一样的。 -
如果将
<item android:state_focused="false" android:color="#FF000000"/> <item android:state_pressed="false" android:color="#FF000000"/> <item android:state_selected="false" android:color="#FF000000"/>替换为<item android:color="#FF000000"/>是否有效? -
好的。虽然默认状态低于真实状态,但它在开始时显示为黑色,一直工作到这里。但即使在对焦、打字后也不会变为蓝色......
-
你把它作为最后一个声明了吗?