1

J'espère que vous m'aideriez à résoudre le problème auquel je suis actuellement confronté.TextInputEditText ne fonctionne pas sur Android 5.1

J'ai créé une vue de recherche personnalisée en utilisant un TextInputEditText, c'est vraiment simple en fait et fonctionne bien sur toute la version Android à l'exception de 5.1 (Lollipop), le EditText ne cache jamais l'indice lors de l'écriture ou même du curseur le texte n'est pas visible.

I t J'ai essayé tout ce que je sais, mais je n'arrive pas à comprendre ce que cela pourrait être.

Merci beaucoup pour votre temps.

Ceci est mon avis de classe personnalisée:

public class CustomSearchView extends RelativeLayout { 

@BindView(R.id.csvIcon) ImageView csvIcon; 
public @BindView(R.id.csvEditText) TextInputEditText editText; 

public CustomSearchView(Context context) { 
    super(context); 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.custom_search_view, this, true); 
    ButterKnife.bind(this); 
} 

public CustomSearchView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.custom_search_view, this, true); 
    ButterKnife.bind(this); 
    TypedArray typedArray = context.getTheme().obtainStyledAttributes(
      attrs, 
      R.styleable.CustomSearchView, 
      0, 0); 
    String hintText = typedArray.getString(R.styleable.CustomSearchView_hintText); 
    try { 
     int max = typedArray.getInteger(R.styleable.CustomSearchView_csv_length, 17); 
     editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(max)}); 
     editText.setInputType(typedArray.getInt(R.styleable.CustomSearchView_android_inputType, InputType.TYPE_CLASS_TEXT)); 
     editText.setHint(hintText); 
     csvIcon.setImageDrawable(typedArray.getDrawable(R.styleable.CustomSearchView_csv_icon)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public CustomSearchView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 
} 

Ce sont la spécification d'attribut:

<declare-styleable name="CustomSearchView"> 
    <attr name="csv_icon" format="reference"/> 
    <attr name="hintText" format="string"/> 
    <attr name="csv_length" format="integer"/> 
    <attr name="android:inputType"/> 
    <attr name="android:digits"/> 
</declare-styleable> 

Ceci est mon XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@color/charcoal_grey_two"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:id="@+id/csvIcon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_marginLeft="10dp" 
      android:src="@drawable/icon_search"/> 

     <android.support.design.widget.TextInputEditText 
      android:id="@+id/csvEditText" 
      android:layout_width="match_parent" 
      android:layout_height="45dp" 
      android:layout_gravity="center" 
      android:cursorVisible="true" 
      android:focusableInTouchMode="true" 
      android:layout_marginLeft="10dp" 
      android:imeOptions="actionSearch" 
      android:inputType="textAutoComplete" 
      android:textSize="20dp" 
      android:textColorHint="@color/slate_grey" 
      android:textColor="@color/slate_grey" 
      android:background="@android:color/transparent"/> 

    </LinearLayout> 

</RelativeLayout> 

Et voici ma mise en œuvre dans un fragment:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:clickable="true" 
android:background="@color/gunmetal"> 

<mx.com.segurosbancomer.gpsajustadores.view.custom.TopBarLayout 
    android:id="@+id/topBar" 
    android:layout_width="match_parent" 
    android:layout_height="45dp" 
    app:tb_color="@color/gunmetal" 
    app:tb_text="@string/bf_title" 
    app:tb_text_color="@color/white" 
    app:tb_btnleft_visibility="0" 
    app:tb_btnright_visibility="8" 
    app:tb_btnleft="@drawable/icon_prev_white" 
    app:tb_btnright="@drawable/icon_dot_gray"/> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_margin="10dp" 
    android:orientation="vertical"> 

    <mx.com.segurosbancomer.gpsajustadores.view.custom.CustomTextView 
     android:id="@+id/tituloPoliza" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="@string/bf_search" 
     android:textColor="@color/white" 
     android:textSize="18dp" 
     android:layout_margin="10dp" 
     app:ctv_customFont="stagsansbook.otf" /> 


    <mx.com.segurosbancomer.gpsajustadores.view.custom.CustomSearchView 
     android:id="@+id/searchPoliza" 
     android:layout_width="match_parent" 
     android:layout_height="45dp" 
     android:layout_margin="10dp" 
     android:cursorVisible="true" 
     android:focusableInTouchMode="true" 
     android:inputType="textAutoComplete" 
     android:digits="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890" 
     app:csv_length="30" 
     app:csv_icon="@drawable/icon_search" 
     app:hintText="@string/bf_poliza" /> 

    <mx.com.segurosbancomer.gpsajustadores.view.custom.CustomSearchView 
     android:id="@+id/searchInciso" 
     android:layout_width="match_parent" 
     android:layout_height="45dp" 
     android:layout_margin="10dp" 
     android:cursorVisible="true" 
     android:focusableInTouchMode="true" 
     android:inputType="textAutoComplete" 
     android:digits="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890" 
     app:csv_length="30" 
     app:csv_icon="@drawable/icon_search" 
     app:hintText="@string/bf_inciso" /> 


    <View 
     android:layout_width="match_parent" 
     android:layout_height="3dp" 
     android:background="@color/charcoal_grey_two"/> 

    <mx.com.segurosbancomer.gpsajustadores.view.custom.CustomTextView 
     android:id="@+id/tituloSerie" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:text="@string/bf_search_serie" 
     android:textColor="@color/white" 
     android:textSize="18dp" 
     android:layout_margin="10dp" 
     app:ctv_customFont="stagsansbook.otf" /> 

    <mx.com.segurosbancomer.gpsajustadores.view.custom.CustomSearchView 
     android:id="@+id/searchSerie" 
     android:layout_width="match_parent" 
     android:layout_height="45dp" 
     android:layout_margin="10dp" 
     android:cursorVisible="true" 
     android:focusableInTouchMode="true" 
     android:inputType="textAutoComplete" 
     android:digits="ABCDEFGHIJKLMNÑOPQRSTUVWXYZ1234567890" 
     app:csv_length="17" 
     app:csv_icon="@drawable/icon_search" 
     app:hintText="@string/bf_serie"/> 


</LinearLayout> 

</LinearLayout> 

Répondre

2

Enfin, je trouve la solution. Si certains autres ont un problème similaire, tout comme moi, le problème a été résolu en supprimant cette ligne de la AndroidManifest.xml

android:hardwareAccelerated="false" 

Cette ligne permet au fragment et tous les composants pour fonctionner parfaitement.

+0

Vous êtes fantastique –

0

Vous devez utiliser TextInputEditText avec TextInputLayout enveloppé. Utilisez simplement EditText à la place. Voir ceci: https://stackoverflow.com/a/37834022/5558150

+0

J'ai modifié la classe et le XML pour utiliser EditText mais il n'y a pas de changement, même sonde avec TextInputLayout et rien :( –