2015-12-24 2 views
0

Только что начали стилизовать и настроить приложение.Как стилизовать виджет EditText в TextInputLayout

У меня много EditText s в TextInputLayout s в AppCompatActivity.

enter image description here

Мои вопросы:

  • Не уверен, что линия (синяя линия выше) в EditText виджет называется просто ссылкой как «правитель». Как правители (невидимые выше), становятся видимыми и в любом обычном цвете. В настоящее время линейка показывает только при нажатии на EditText.
  • Курсор EditText не показывает, как его можно сделать видимым?
  • Как можно настроить кнопку «Добавить» выше в отношении цвета фона и цвета текста?
  • Как установить фокус на первый EditText?
  • Как можно изменить цвет подсказки TextInputLayout после того, как он сжимается и летает вверх? (В настоящее время синий.)
  • Является ли шрифт для Android по умолчанию Roboto? Как я могу изменить шрифт на все, что доступно там, «реально быстро»?

Большое спасибо за любую помощь или указатели.

Соответствующие фрагменты кода:

Layout файл

  <TextView 
      android:id="@+id/pocLabel" 
      style="@style/DialogLabelColor" 
      android:text="Business Owner"/> 

     <android.support.design.widget.TextInputLayout 
      android:id="@+id/tilPOCFName" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/pocLabel"> 

      <android.support.v7.widget.AppCompatEditText 
       android:id="@+id/POCFName" 
       style="@style/InputDialogText" 
       android:hint="First name (REQUIRED)" 
       android:inputType="textCapWords"/> 
     </android.support.design.widget.TextInputLayout> 

     <android.support.design.widget.TextInputLayout 
      android:id="@+id/tilPOCLName" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/tilPOCFName" 
      android:textColor="#000000"> 

      <EditText 
       android:id="@+id/POCLName" 
       style="@style/InputDialogText" 
       android:hint="Last name" 
       android:inputType="textCapWords"/> 
     </android.support.design.widget.TextInputLayout> 

styles.xml

<!-- 
    Base application theme, dependent on API level. This theme is replaced 
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
--> 
<style name="AppBaseTheme" parent="android:Theme.Light"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here 
    --> 

</style> 

<style name="activated" parent="AppBaseTheme"></style> 
<!-- Application theme --> 
<style name="MyThemeNavy" parent="Theme.AppCompat.NoActionBar"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    <item name="windowActionBar">false</item> 
    <item name="android:windowActionBar">false</item> 
    <item name="android:colorPrimary">@color/primaryColor</item> 
    <item name="android:colorPrimaryDark">@color/primaryColorDark</item> 
    <item name="android:colorAccent">@color/accentColor</item> 
    <item name="android:textColor">@color/main_list_text_color</item> 
    <item name="android:textColorHint">@color/main_list_text_color</item> 
    <item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item> 

</style> 

<style name="Base.Widget.AppCompat.DrawerArrowToggle." parent="Base.Widget.AppCompat.DrawerArrowToggle"> 
    <item name="spinBars">true</item> 
    <item name="color">#FFF</item> 
</style> 

<style name="InfoDlgTextLHS" parent="AppBaseTheme"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> 
    <item name="android:textStyle">normal</item> 
    <item name="android:textColor">@color/main_list_text_color</item> 
</style> 
<style name="InputDialogText" parent="MyThemeNavy"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item> 
    <item name="android:textStyle">normal</item> 
    <item name="android:textColor">@color/main_list_text_color</item> 
</style> 
<style name="InfoDlgTextRHS" parent="AppBaseTheme"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:textAppearance">?android:attr/textAppearanceSmall</item> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textColor">@color/main_list_text_color</item> 
</style> 
<style name="DialogLabelColor" parent="MyThemeNavy"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_margin">4dp</item> 
    <item name="android:padding">10dp</item> 
    <item name="android:background">@drawable/dialog_label_background</item> 
    <item name="android:textColor">@color/main_list_text_color_inverse</item> 
    <item name="android:textStyle">bold</item> 
</style> 
<style name="MyThemeNavy.Dialogs" parent="MyThemeNavy"> 
    <item name="android:textColor">@color/main_list_text_color</item> 
    <item name="android:textColorHint">@color/main_list_text_color</item> 
</style> 
</resources> 

colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="primaryColor">#006989</color> 
<color name="primaryColorDark">#FFFFFF</color> 
<color name="accentColor">#FFFFFF</color> 
<color name="colorBackground">#B1C1C0</color> 
<!-- Drawer --> 
<color name="mainDrawerBackground">#564639</color> 

<!-- Main (non-drawer) lists --> 
<color name="commonMainListsBackground">#FFFFFF</color> 
<color name="main_list_text_color">#000000</color> 
<color name="list_item_pressed_color">#CADAFF</color> 
<color name="list_item_color">#FFFFFF</color> 
<color name="drawer_list_item_pressed_color">#E4FDE1</color> 
<color name="drawer_list_item_color">@color/mainDrawerBackground</color> 
<color name="divider_color">#DFF8EB</color> 

<!-- Counters --> 
<color name="distance_counter_color">#FE5F55</color> 
<color name="deals_counter_color">#388659</color> 

<!-- Information dialog --> 
<color name="info_content_color">#FFFFFF</color> 
<color name="primary_material_dark">#9e9e9e</color> 
<color name="primary_dark_material_dark">#cad7ff</color> 
<color name="accent_material_dark">#3469ff</color> 
<color name="background_material_dark">#344055</color> 
<color name="foreground_material_dark">#ffffff</color> 
<color name="colorPrimaryDark">#044389</color> 

<!-- Input dialogs --> 
<color name="input_dialog_backgroud">#6DAEDB</color> 
<color name="main_list_text_color_inverse">#FFFFFF</color> 

AndroidManifest.xml

 <activity 
     android:name=".xxx.xxxCRUActivity" 
     android:label="@string/title_activity_add" 
     android:theme="@style/MyThemeNavy.Dialogs"> 
     <intent-filter> 
      <action android:name="android.intent.action.VIEW"/> 

      <category android:name="android.intent.category.DEFAULT"/> 
     </intent-filter> 
    </activity> 

Спасибо!

+0

ЕСЛИ вы хотите изменить цвет текста ввода текста Hiint, измените цвет цвета в документе color.xml. –

+0

Отправьте свой полный стиль.xml, color.xml и layoutfile. –

+0

Спасибо @ChiragSavsani. Написал полный XML-стиль 'colors' и' styles'. Мой файл макета слишком большой для этой записи. –

ответ

6

Что касается вашего TextInputLayout, создать стиль для него

<style name="InputLayout" parent="TextAppearance.AppCompat"> 
     <item name="android:textSize">18sp</item> 
     <item name="android:textColor">@color/white</item> 
     <item name="android:textColorHint">@color/grey</item> 
     <item name="colorAccent">@color/grey</item> 
     <item name="colorControlNormal">@color/grey</item> 
     <item name="colorControlActivated">@color/green</item> 
    </style> 

Это дает некоторую гибкость для стилизации AppCompatEditText. Не забудьте добавить стиль к TextInputLayout.

<android.support.design.widget.TextInputLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/InputLayout"> 

     <android.support.v7.widget.AppCompatEditText 
      android:id="@+id/editText" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="@string/hint" /> 

    </android.support.design.widget.TextInputLayout> 
+0

Спасибо, @Niels Masdorp. Получив исключение, воспользовавшись предложением: 'Caused by: java.lang.UnsupportedOperationException: Невозможно преобразовать в цвет: type = 0x2 at android.content.res.TypedArray.getColor (TypedArray.java:327)' Не знаете, почему. Моя деятельность в манифесте использует пользовательскую тему (код выше). Из-за этой ошибки? –

+0

Моя ошибка, вышеизложенное исключение. Виджет был 'EditText', а не' AppCompatEditText'. –

+0

+1 для вашего предложения, @Niels Masdorp: работает стиль цветной подсказки. Не уверен, что делают атрибуты colorControl. Они для правителя? –

Смежные вопросы