Как изменить цвет плавающей метки TextInputLayout


210

TextInputLayoutКак изменить цвет текста плавающей метки со ссылкой на новую версию, выпущенную Google?

Установка colorControlNormal, colorControlActivated, colorControlHighLightв стилях не помогает.

Вот что у меня сейчас:

Вот что у меня сейчас


8
Как изменить цвет линии на красный?
Влад

6
@ Vlad161 colorAccent
Кайл Хоркли

@ Vlad161 мог бы объяснить, где вы будете устанавливать colorAccent? Я изменил пользовательский стиль colorAccentна черный, и линия все равно будет отражать то, что я имею colorControlNormalв основном стиле.
ElliotM

2
Нашел хороший пример здесь
Chintan Rathod

Проверьте следующую ссылку. Он устанавливает другой цвет для подсказки и подчеркивания: https://stackoverflow.com/a/45349177/3392323
SAndroidD

Ответы:


359

Попробуйте приведенный ниже код, он работает в нормальном состоянии

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

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

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

В папке стилей TextLabel Code

 <style name="TextLabel" parent="TextAppearance.AppCompat">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

Установить на основную тему приложения, оно работает только выделить только состояние

 <item name="colorAccent">@color/Color Name</item>

Обновить:

UnsupportedOperationException: невозможно преобразовать в цвет: type = 0x2 в API 16 или ниже

Решение

Обновить:

Используете ли вы библиотеку компонентов материалов

Вы можете добавить строки ниже к вашей основной теме

 <item name="colorPrimary">@color/your_color</item> // Activated State
 <item name="colorOnSurface">@color/your_color</item> // Normal State

или же вы хотите разные цвета в состоянии noraml и в активированном состоянии и с настройкой следуйте приведенному ниже коду

<style name="Widget.App.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
    <item name="materialThemeOverlay">@style/ThemeOverlay.App.TextInputLayout</item>
    <item name="shapeAppearance">@style/ShapeAppearance.App.SmallComponent</item> //Changes the Shape Apperance
    <!--<item name="hintTextColor">?attr/colorOnSurface</item>-->   //When you added this line it will applies only one color in normal and activate state i.e colorOnSurface color
</style>

<style name="ThemeOverlay.App.TextInputLayout" parent="">
    <item name="colorPrimary">@color/colorPrimaryDark</item>  //Activated color
    <item name="colorOnSurface">@color/colorPrimary</item>    //Normal color
    <item name="colorError">@color/colorPrimary</item>        //Error color

    //Text Appearance styles
    <item name="textAppearanceSubtitle1">@style/TextAppearance.App.Subtitle1</item>
    <item name="textAppearanceCaption">@style/TextAppearance.App.Caption</item>

    <!--Note: When setting a materialThemeOverlay on a custom TextInputLayout style, dont forget to set editTextStyle to either a @style/Widget.MaterialComponents.TextInputEditText.* style or to a custom one that inherits from that.
    The TextInputLayout styles set materialThemeOverlay that overrides editTextStyle with the specific TextInputEditText style needed. Therefore, you dont need to specify a style tag on the edit text.-->
    <item name="editTextStyle">@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox</item>
</style>

<style name="TextAppearance.App.Subtitle1" parent="TextAppearance.MaterialComponents.Subtitle1">
    <item name="fontFamily">@font/your_font</item>
    <item name="android:fontFamily">@font/your_font</item>
</style>

<style name="TextAppearance.App.Caption" parent="TextAppearance.MaterialComponents.Caption">
    <item name="fontFamily">@font/your_font</item>
    <item name="android:fontFamily">@font/your_font</item>
</style>

<style name="ShapeAppearance.App.SmallComponent" parent="ShapeAppearance.MaterialComponents.SmallComponent">
    <item name="cornerFamily">cut</item>
    <item name="cornerSize">4dp</item>
</style>

Добавьте строку ниже к вашей основной теме, иначе вы можете установить стиль для textinputlayout в вашем xml

<item name="textInputStyle">@style/Widget.App.TextInputLayout</item>

6
Вау, я работаю над этим уже неделю - я возвращался к этому вопросу несколько раз, вы только что ответили на все мои вопросы.
ElliotM

40
Приложение зависало при установке сообщения об ошибке в TextInputLayout или при отображении представления EditText:android.view.InflateException: Error inflating class TextView
Arvis

18
Осторожно, установка этого android:themeстиля TextInputLayoutприводит к InflateExceptionсбоям на ASUS Zenphones (и, возможно, других устройствах).
Friederbluemle

13
Привет, nj, извините за это, я не знаю, почему это происходит, но я изменил TextAppearance.AppCompat на ThemeOverlay.AppCompat.Light, он работает нормально, даже когда используется set error to textinputlayout
Брахман Ямани

11
Установка родителя, чтобы ThemeOverlay.AppCompat.Lightпомочь решить сбой на моем ASUS Zenphone (@friederbluemle)
Lukasz Wiktor

103
<style name="TextAppearance.App.TextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/red</item>
    <item name="android:textSize">14sp</item>
</style>

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColorHint="@color/gray"  //support 23.0.0
    app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" >

    <android.support.v7.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hint" />
</android.support.design.widget.TextInputLayout>

16
Это то же самое, что и принятый ответ, за исключением того, что вам нужно вводить в заблуждение, что вам нужно использовать AppCompatEditText. AppCompatActivity будет автоматически использовать AppCompatEditText для экземпляров EditText, вам не нужно специально использовать это.
Найл

4
Первая строка кода выше сразу после «<имя стиля» содержит орфографическую ошибку. Я считаю, что "... TextAppearence ..." должно быть "... TextAppearance ..."
AJW

android:textColorHint="@color/gray" //support 23.0.0сделал мой цвет текста подсказки видимым (цвет текста подсказки был черным по умолчанию независимо от цвета текста подсказки, который я установил, и если фон черный, текст полностью скрыт
Раджараман

70

Найдя ответ, используйте android.support.design:hintTextAppearanceатрибут, чтобы установить собственный внешний вид плавающей метки.

Пример:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:hintTextAppearance="@style/TextAppearance.AppCompat">

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/prompt_password"/>
</android.support.design.widget.TextInputLayout>

Приятная плавная анимация. Спасибо
Хоакин Иурчук

Я получаю Namespace 'android.support.design' not bound. Какие-либо предложения?
Sunkas

@Sunkas добавить compile 'com.android.support:design:23.1.1'в свой файл gradle приложения
Ахмед Мостафа

24

Вам не нужно использовать android:theme="@style/TextInputLayoutTheme"для изменения цвета плавающей метки, так как это повлияет на всю тему для маленького TextView, используемого в качестве метки. Вместо этого вы можете использовать app:hintTextAppearance="@style/TextInputLayout.HintText"где:

<style name="TextInputLayout.HintText">
  <item name="android:textColor">?attr/colorPrimary</item>
  <item name="android:textSize">@dimen/text_tiny_size</item>
  ...
</style>

Дайте мне знать, если решение работает :-)


22

как изменить цвет текста плавающей метки?

С помощью библиотеки компонентов материалов вы можете настроить TextInputLayoutцвет текста подсказки с помощью (для этого требуется версия 1.1.0).

  • В макете:

  • app:hintTextColor атрибут: цвет метки, когда она свернута и текстовое поле активно

  • android:textColorHint атрибут: цвет метки во всех других состояниях текстового поля (например, в состоянии покоя и отключен)

<com.google.android.material.textfield.TextInputLayout
     app:hintTextColor="@color/mycolor"
     android:textColorHint="@color/text_input_hint_selector"
     .../>
<style name="MyFilledBox" parent="Widget.MaterialComponents.TextInputLayout.FilledBox">
    <item name="hintTextColor">@color/mycolor</item>
    <item name="android:textColorHint">@color/text_input_hint_selector</item>
</style>

введите описание изображения здесьвведите описание изображения здесь

Селектор по умолчанию для android:textColorHint:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_enabled="false"/>
  <item android:alpha="0.6" android:color="?attr/colorOnSurface"/>
</selector>


@Jayanth Спасибо за отзыв. Исправлена.
Габриэле Мариотти

4

Итак, я нашел этот ответ очень полезным и спасибо всем людям, которые внесли свой вклад. Просто чтобы добавить что-то, хотя. Принятый ответ действительно является правильным ответом ... НО ... в моем случае я искал сообщение об ошибке под EditTextвиджетом, app:errorEnabled="true"и эта единственная строка усложнила мою жизнь. кажется, что это переопределяет тему, которую я выбрал android.support.design.widget.TextInputLayout, у которой другой цвет текста, определенный android:textColorPrimary.

В итоге я принял решение применить цвет текста непосредственно к EditTextвиджету. Мой код выглядит примерно так:

styles.xml

<item name="colorPrimary">@color/my_yellow</item>
<item name="colorPrimaryDark">@color/my_yellow_dark</item>
<item name="colorAccent">@color/my_yellow_dark</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@color/dark_gray</item>
<item name="android:windowBackground">@color/light_gray</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:textColorHint">@color/dark_gray</item>
<item name="android:colorControlNormal">@android:color/black</item>
<item name="android:colorControlActivated">@android:color/white</item>

И мой виджет:

<android.support.design.widget.TextInputLayout
        android:id="@+id/log_in_layout_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:errorEnabled="true">

        <EditText
            android:id="@+id/log_in_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textColor="@android:color/black"
            android:ems="10"
            android:hint="@string/log_in_name"
            android:inputType="textPersonName" />
</android.support.design.widget.TextInputLayout>

Теперь он отображает черный цвет текста вместо textColorPrimaryбелого.


3

Я предлагаю вам сделать тему стиля для TextInputLayout и изменить только акцентный цвет. Установите родителя для основной темы вашего приложения:

 <style name="MyTextInputLayout" parent="MyAppThemeBase">
     <item name="colorAccent">@color/colorPrimary</item>
 </style>

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

2

В последней версии библиотеки поддержки (23.0.0+) TextInputLayoutпринимает следующий атрибут в XML для редактирования цвета плавающей метки:android:textColorHint="@color/white"


2

Вместо ответа Брахмана Ямани я предпочитаю использовать Widget.Design.TextInputLayout в качестве родителя. Это гарантирует, что присутствуют все необходимые элементы, даже если не все элементы перезаписаны. В ответе Yamanis приложение будет аварийно завершать работу с неразрешимым ресурсом, если вызывается setErrorEnabled (true).

Просто измените стиль следующим образом:

<style name="TextLabel" parent="Widget.Design.TextInputLayout">
    <!-- Hint color and label color in FALSE state -->
    <item name="android:textColorHint">@color/Color Name</item> 
    <item name="android:textSize">20sp</item>
    <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
    <item name="colorAccent">@color/Color Name</item>
    <item name="colorControlNormal">@color/Color Name</item>
    <item name="colorControlActivated">@color/Color Name</item>
 </style>

1
хорошо работает на Android 4.3 и 7, без ошибок при использовании EditText.setError ()
Saul_programa

2

В моем случае я добавил это " app:hintTextAppearance="@color/colorPrimaryDark"в моем виджете TextInputLayout.


Это не работает. error: '#FFFFFF' is incompatible with attribute hintTextAppearance
Таслим Осени

2

Программно вы можете использовать:

/* Here you get int representation of an HTML color resources */
int yourColorWhenEnabled = ContextCompat.getColor(getContext(), R.color.your_color_enabled);
int yourColorWhenDisabled = ContextCompat.getColor(getContext(), R.color.your_color_disabled);

/* Here you get matrix of states, I suppose it is a matrix because using a matrix you can set the same color (you have an array of colors) for different states in the same array */
int[][] states = new int[][]{new int[]{android.R.attr.state_enabled}, new int[]{-android.R.attr.state_enabled}};

/* You pass a ColorStateList instance to "setDefaultHintTextColor" method, remember that you have a matrix for the states of the view and an array for the colors. So the color in position "colors[0x0]" will be used for every states inside the array in the same position inside the matrix "states", so in the array "states[0x0]". So you have "colors[pos] -> states[pos]", or "colors[pos] -> color used for every states inside the array of view states -> states[pos] */
myTextInputLayout.setDefaultHintTextColor(new ColorStateList(states, new int[]{yourColorWhenEnabled, yourColorWhenDisabled})

Explaination:

Получить значение цвета int из цветового ресурса (способ представления цветов RGB, используемых Android). Я написал ColorEnabled, но на самом деле так и должно быть, для этого ответа ColorHintExpanded & ColorViewCollapsed. В любом случае это цвет, который вы увидите, когда подсказка представления «TextInputLayout» находится в расширенном или свернутом состоянии; вы установите его с помощью следующего массива в функции "setDefaultHintTextColor" представления. Ссылка: Ссылка на TextInputLayout - найдите на этой странице метод setDefaultHintTextColor для получения дополнительной информации.

Изучив документы выше, вы увидите, что функции устанавливают цвета для подсказки «Развернутый и свернутый» с помощью ColorStateList.

ColorStateList документы

Для создания ColorStateList я сначала создал матрицу с нужными мне состояниями, в моем случае state_enabled & state_disabled (чьи значения в TextInputLayout равны Hint Expanded и Hint Collased [Я не помню, в каком порядке lol, в любом случае я нашел его) просто делаю тест]). Затем я передаю конструктору ColorStateList массивы со значениями int цветовых ресурсов, эти цвета соответствуют матрице состояний (каждый элемент в массиве цветов соответствует соответствующему массиву в матрице состояний в той же позиции). Таким образом, первый элемент массива цветов будет использоваться как цвет для каждого состояния в первом массиве матрицы состояний (в нашем случае массив имеет только 1 элемент: enabled state = расширенное состояние подсказки для TextInputLayut). Состояния последних вещей имеют положительные / отрицательные значения, а у вас есть только положительные значения,

Надеюсь, это полезно. Пока приятного кодирования (:


Explaination? Это всего лишь 2 метода: / В любом случае, я быстро добавлю их.
Z3R0

Всего четыре строки с большим количеством текста - просто кратко объясните концепции, стоящие за ними, и у каждого есть веская причина оставить голосование :)
Нико Хаас

1
Готово;) Надеюсь, это правильно и полезно. Приятного кодирования: D
Z3R0

1

Чтобы изменить цвет подсказки и отредактировать цвет подчеркивания текста: colorControlActivation

Чтобы изменить цвет счетчика символов: textColorSecondary

Чтобы изменить цвет сообщения об ошибке: colorControlNormal

Чтобы изменить оттенок кнопки видимости пароля: colorForeground

Для получения дополнительной информации о TextInputLayout читайте http://www.zoftino.com/android-textinputlayout-tutorial

<style name="MyAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorControlActivated">#e91e63</item>
    <item name="android:colorForeground">#33691e</item>
    <item name="colorControlNormal">#f57f17</item>
    <item name="android:textColorSecondary">#673ab7</item>
</style>

0

Вы должны изменить свой цвет здесь

<style name="Base.Theme.DesignDemo" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">#673AB7</item>
        <item name="colorPrimaryDark">#512DA8</item>
        <item name="colorAccent">#FF4081</item>
        <item name="android:windowBackground">@color/window_background</item>
    </style>

0

Теперь просто пользуюсь colorAccentи colorPrimaryбудет отлично работать.


4
Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий под своим постом.
Свати

2
@Swati Это ответ на вопрос. Я говорю ему использовать colorAccent и colorPrimary.
Кайл Хоркли

6
Ну, это скорее комментарий. Вы можете иметь точку, если вы добавите пример кода.
Суфий

На самом деле TextInputLayout взял именно colorPrimaryв теме, чтобы установить подсказку и фокусированный цвет нижней строки. Хотя в этом ответе действительно должно было быть какое-то объяснение / код, чтобы продемонстрировать это в ответе
Кирилл Старостин

0

Я решаю проблему. Это макет :

 <android.support.design.widget.TextInputLayout
           android:id="@+id/til_username"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:hint="@string/username"
           >

           <android.support.v7.widget.AppCompatEditText android:id="@+id/et_username"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:singleLine="true"
               />
       </android.support.design.widget.TextInputLayout>

Это стиль:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!--
            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>
<!-- Application theme. -->


 <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        <item name="colorAccent">@color/pink</item>
        <item name="colorControlNormal">@color/purple</item>
        <item name="colorControlActivated">@color/yellow</item>
    </style>

Вы должны использовать свою тему в приложении:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
</application>

0

изменить цвет текстовой метки, когда вы сосредоточены на нем. т.е. набрав в нем. Вы должны добавить указать

<item name="android:textColorPrimary">@color/yourcolorhere</item>

Просто примечание: вы должны добавить все эти реализации в вашу основную тему.


0

Это работает для меня ..... добавить цвет подсказки в TextInputLayout

    <android.support.design.widget.TextInputLayout
        android:textColorHint="#ffffff"
        android:id="@+id/input_layout_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/edtTextPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="15dp"
            android:hint="Password"
            android:inputType="textPassword"
            android:singleLine="true"
            />
    </android.support.design.widget.TextInputLayout>

0

Я пытался использовать android: textColorHint в android.support.design.widget.TextInputLayout, он работает нормально.

        <android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColorHint="@color/colorAccent">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Hello"
                android:imeActionLabel="Hello"
                android:imeOptions="actionUnspecified"
                android:maxLines="1"
                android:singleLine="true"/>

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

0
  <style name="AppTheme2" parent="AppTheme">
    <!-- Customize your theme here. -->
    <item name="colorControlNormal">#fff</item>
    <item name="colorControlActivated">#fff</item></style>    

добавьте это к стилям и установите TextInputLayout Theam в App2, и это будет работать;)


0
<com.google.android.material.textfield.TextInputLayout
    android:hint="Hint"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/TextInputLayoutHint">

    <androidx.appcompat.widget.AppCompatEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:maxLines="1"
        android:paddingTop="@dimen/_5sdp"
        android:paddingBottom="@dimen/_5sdp"
        android:textColor="#000000"
        android:textColorHint="#959aa6" />

</com.google.android.material.textfield.TextInputLayout>

RES / значения / styles.xml

<style name="TextInputLayoutHint" parent="">
    <item name="android:textColorHint">#545454</item>
    <item name="colorControlActivated">#2dbc99</item>
    <item name="android:textSize">11sp</item>
</style>

0

Можно использовать, app:hintTextColorесли вы используете com.google.android.material.textfield.TextInputLayout, попробуйте это

 <com.google.android.material.textfield.TextInputLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:hint="@string/app_name" 
     app:hintTextColor="@android:color/white">                   

     <com.google.android.material.textfield.TextInputEditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
 </com.google.android.material.textfield.TextInputLayout>

0

Попробуйте приведенный ниже код, он работает в нормальном состоянии

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

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


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

В папке стилей TextLabel Code

 <style name="TextLabel" parent="TextAppearance.AppCompat">
<!-- Hint color and label color in FALSE state -->
<item name="android:textColorHint">@color/Color Name</item> 
<item name="android:textSize">20sp</item>
<!-- Label color in TRUE state and bar color FALSE and TRUE State -->
<item name="colorAccent">@color/Color Name</item>
<item name="colorControlNormal">@color/Color Name</item>
<item name="colorControlActivated">@color/Color Name</item>
 </style>

0

Из документации:

Подсказка должна быть установлена ​​на TextInputLayout, а не на EditText. Если для дочернего EditText в XML указана подсказка, TextInputLayout все равно может работать правильно; TextInputLayout будет использовать подсказку EditText в качестве плавающей метки. Однако будущие вызовы для изменения подсказки не обновят подсказку TextInputLayout. Чтобы избежать непреднамеренного поведения, вызовите setHint (CharSequence) и getHint () для TextInputLayout, а не для EditText.

Поэтому я android:hintи app:hintTextColorна TextInputLayout, а не на , TextInputEditTextи она работала.


0

Потому что вы должны добавить colorControlNormal, colorControlActivated, colorControlHighLightэлементы к основной теме приложения:

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="colorControlActivated">@color/yellow_bright</item>
        <item name="colorControlNormal">@color/yellow_black</item>

    </style>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.