我一直在尝试在焦点上更改edittext的基线颜色,但它似乎不起作用..
这是我的.xml片段:
<android.support.design.widget.TextInputLayout
android:id="@+id/til_passwordWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/dimen_10"
android:paddingLeft="@dimen/dimen_10"
android:paddingRight="@dimen/dimen_10"
android:hint="@string/hint_login_password"
>
<android.support.v7.widget.AppCompatEditText
android:id="@+id/password"
android:textSize="17sp"
android:fontFamily="sans-serif"
android:textColor="#000000"
android:textCursorDrawable="#000000"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
app:backgroundTint="#000000"
android:maxLines="1"
/>
</android.support.design.widget.TextInputLayout>
这是我的styles-v21文件:
<style name="AppTheme" parent="AppTheme.Base">
<item name="colorPrimary">@color/ColorPrimary</item>
<item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
<item name="colorAccent">@color/ColorPrimary</item>
</style>
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowContentTransitions">true</item>
<item name="android:windowEnterTransition">@android:transition/slide_bottom</item>
<item name="android:windowExitTransition">@android:transition/slide_bottom</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
<item name="android:windowSharedElementExitTransition">@android:transition/move</item>
</style>
其中: - ColorPrimary =#CD060C(红色) - ColorPrimaryDark =#8B181B(深红色)
我在Lollipop设备上进行了测试,效果很好。我不能对我的Marshamallow设备说同样的话。我在S.O上看了一下这个问题,看看M和以上设备如何解决这个问题。有人提出了一种方法,包括在我的活动类中添加这几行代码:
passwordWrapper.getEditText().setOnFocusChangeListener(new View.OnFocusChangeListener(){
@Override
public void onFocusChange(View v, boolean hasFocus){
if (hasFocus)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
v.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.ColorBlackTransparent)));
}
}
}
});
在我的Marshmallow设备上,每当我专注于编辑文本时,我都会继续使用渐变色,即基线的红色......我希望它是黑色的..
有没有人在此问题上有解决方法?感谢
答案 0 :(得分:1)
首先,您不需要使用setOnFocusChangeListener
更改TextInputLayout
的下划线颜色
有针对它的android项属性,当edittext
被激活时会改变颜色。
在基本主题中添加此属性:
<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">#000000</item> //black color
<item name="colorControlHighlight">#000000</item>
</style>
确保在活动中使用主题:Manifest
<activity android:name=".YourActivity"
android:theme="@style/AppTheme.Base"/>
修改强>
设置colorControlHighlight
会影响导航抽屉选定的项目颜色。所以使用:
:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/colorPrimary" android:state_checked="true" />
<item android:drawable="@android:color/transparent" />
</selector>
现在在导航视图中将背景设置为:
app:itemBackground="@drawable/drawer"