Comment définir le style de conception de matériau sur Disabled EditText (android)?

J'essaie de rendre le style de mon style modifié EditText comme dans les lignes directrices:

Https://www.google.com/design/spec/components/text-fields.html#text-fields-labels

  • IllegalArgumentException lors de l'instanciation de HttpClient dans Android
  • Erreur StrictMode $ AndroidBlockGuardPolicy.onNetwork
  • Impossible d'appliquer un plugin Le plugin Android Gradle 3.0.0-alpha5 ne doit pas être appliqué au projet
  • Comment ajouter de nouveaux contacts à Android
  • Comment télécharger un fichier sur Google Drive à l'aide de mon application Android
  • L'appel nécessite un niveau API 23: erreur getForeground (), mais est une méthode FrameLayout depuis API 1
  • <EditText android:id="@+id/account_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/test_account" android:enabled="false" /> 

    J'ai déjà mis en œuvre des styles de conception de matériaux, de sorte que tous mes widgets ressemblent à du matériel.

    La question est: Y at-il un moyen d'obtenir ce soulignement pointillé en utilisant des styles , sans mettre de vues supplémentaires?

    My styles.xml :

     <style name="Theme.Main" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:editTextStyle">@style/android:Widget.Material.EditText</item> </style> 

  • Comment ajouter un indice dans EditText avec inputType = "numberDecimal"?
  • Synchronisation SQLiteOpenHelper
  • Deux activités principales dans AndroidManifest.xml
  • Contexte veut FLAG_ACTIVITY_NEW_TASK mais j'ai déjà défini ce drapeau
  • NotifyDataSetChanged pour plusieurs cases à cocher
  • SwipeRefreshLayout interférer avec setOnScrollListener
  • 3 Solutions collect form web for “Comment définir le style de conception de matériau sur Disabled EditText (android)?”

    AFAIK, il n'y a pas de "stock". Prenez les directives de conception de matériaux tel qu'il est, une directive;)

    Enfin, j'ai réussi à faire comme vous l'avez montré. Il ressemble à échantillon

    Créez le dotted.xml intérieur drawable dossier et collez ces

     <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="1dp" android:left="-2dp" android:right="-2dp" android:top="-2dp"> <shape android:shape="rectangle"> <stroke android:width="0.5dp" android:color="@android:color/black" /> <solid android:color="#ffffff" /> <stroke android:width="1dp" android:color="#030310" android:dashGap="5dp" android:dashWidth="5dp" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> </shape> </item> </layer-list> 

    Ensuite, configurez simplement l'attribut android:background dotted.xml nous venons de créer. Votre EditText ressemble à ceci.

     <EditText android:id="@+id/account_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="test account" android:background="@drawable/dotted" style="@style/Theme.Main" <!--Its your custom style--> android:enabled="false" /> 

    Enfin, j'ai fini par une vue personnalisée. Ce n'est peut-être pas la solution la plus élégante, mais elle résout mes tâches.

    J'espère que cela sera utile pour quelqu'un.


    DisabledTextField.java :

     package com.kabunov.example.ui.common; import android.content.Context; import android.content.res.TypedArray; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import com.kabunov.example.R; public final class DisabledTextField extends FrameLayout { private TextView tvCaption; private TextView tvText; private View divider; public DisabledTextField(final Context context) { this(context, null); } public DisabledTextField(final Context context, final AttributeSet attrs) { this(context, attrs, 0); } public DisabledTextField(final Context context, final AttributeSet attrs, final int defStyleAttr) { super(context, attrs, defStyleAttr); View.inflate(getContext(), R.layout.component_disabled_text_field, this); tvCaption = (TextView) findViewById(R.id.caption); tvText = (TextView) findViewById(R.id.value); final TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.DisabledTextField); if (null != typedArray) { final String captionText = typedArray.getString(R.styleable.DisabledTextField_caption); if (TextUtils.isEmpty(captionText)) { tvCaption.setVisibility(GONE); } else { tvCaption.setText(captionText); tvCaption.setVisibility(VISIBLE); } final String text = typedArray.getString(R.styleable.DisabledTextField_disabledText); tvCaption.setText(text); typedArray.recycle(); } } public final void setCaption(final CharSequence caption) { this.tvCaption.setText(caption); this.tvCaption.setVisibility(VISIBLE); } public final void setDisabledText(final CharSequence value) { this.tvText.setText(value); } } 

    /layout/component_disabled_text.xml :

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/caption" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/DisabledTextFieldCaption"/> <TextView android:id="@+id/value" android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/DisabledTextFieldValue"/> <View android:id="@+id/divider" android:layout_width="match_parent" android:layout_height="1dp" android:background="@drawable/disabled_text_field_background" android:layerType="software"/> </LinearLayout> 

    /values/attributes_disabled_text_field.xml :

     <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="DisabledTextField"> <attr name="caption" format="string"/> <attr name="disabledText" format="string"/> </declare-styleable> </resources> 

    /drawable/disabled_text_field_background.xml :

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:bottom="-1dp" android:left="-1dp" android:right="-1dp" android:top="0dp"> <shape android:shape="rectangle"> <stroke android:width="1dp" android:color="@color/text_color_disabled_text_view" android:dashGap="2dp" android:dashWidth="1dp" /> <solid android:color="@android:color/transparent" /> </shape> </item> </layer-list> 

    /values/styles.xml :

     <?xml version="1.0" encoding="utf-8"?> <resources> <color name="text_color_disabled_text_view">#61000000</color> <style name="DisabledTextFieldCaption"> <item name="android:textSize">12sp</item> <item name="android:textColor">@color/text_color_disabled_text_view</item> </style> <style name="DisabledTextFieldValue"> <item name="android:layout_marginTop">3dp</item> <item name="android:layout_marginBottom">8dp</item> <item name="android:textSize">16sp</item> <item name="android:textColor">@color/text_color_disabled_text_view</item> </style> </resources> 

    Exemple d'utilisation :

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <com.kabunov.example.ui.common.DisabledTextField android:id="@+id/example" android:layout_width="match_parent" android:layout_height="wrap_content" custom:caption="Some caption" custom:disabledText="Disabled text"/> </LinearLayout> 

    Et le résultat :

    Entrez la description de l'image ici

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.