Questo è un "bug" che ho scoperto mentre lavoravo su un'app reale, ma ho creato un progetto vuoto per riprodurlo.La classe figlio di EditText è diversa dal normale EditText su Android 4
ho il seguente schema:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:id="@+id/root"
android:orientation="vertical"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.example.test.testapp.MyEditText
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
La classe MyEditText
si presenta così:
public class MyEditText extends EditText {
public MyEditText(Context context){
super(context);
}
public MyEditText(Context context, AttributeSet attrs){
super(context, attrs);
}
public MyEditText(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
}
}
Il mio file styles.xml
è vuoto tranne che per il tema
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
</style>
</resources>
mi si aspetterebbe il MyEditText
sembra il normale EditText
e lo fa su Android 5.0, ma non su Android 2.3.7, Android 4.1.3 o Android 4.4.4.
Per questi versioni di Android i EditText
s si differenziano per il colore, quella normale ha una sottolineatura ciano quando si è concentrato, quello personalizzato ha una sottolineatura nera:
perché è questo accadendo e come posso prevenirlo?
EDIT/UPDATE:
Google seems to have adressed this nella libreria di supporto, introducendo, tra l'altro, una classe AppCompatEditText.
Wow, hai già preparato questa risposta? :) Grazie mille! – FWeigl
@ Ascorbin: "Wow, hai già preparato questa risposta?" - beh, è una mezza citazione, che risparmia sulla digitazione. :-) Avrò bisogno di guardare la mia seconda opzione io stesso ad un certo punto, in quanto ho [una sottoclasse di 'EditText'] (https://github.com/commonsguy/cwac-richedit) che soffrirà dello stesso problema. – CommonsWare