В EditText отсутствуют курсор и подчеркивание - PullRequest
0 голосов
/ 31 мая 2018

Я использую EditText внутри Toolbar, независимо от того, что я делаю, курсор и подчеркивание не отображаются

XML-код

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    app:collapseIcon="@drawable/ic_arrow_up_24dp"
    app:titleTextColor="@color/white"
    android:layout_alignParentTop="true"
    android:animateLayoutChanges="true"
    android:visibility="gone"
    android:alpha="0.0"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">


    <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:cursorVisible="true"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_height="wrap_content"
        android:hint="Search..."
        android:textCursorDrawable="@color/white"
        android:textColor="@color/md_white_1000"
        android:layout_marginRight="120dp"
        />

</LinearLayout>
</android.support.v7.widget.Toolbar>

код Котлина

        editText?.visibility = View.VISIBLE
        editText?.requestFocus()
        editText?.isCursorVisible = true
        editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
        editText.setTextIsSelectable(true);

Где я иду не так, кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018
  1. определяют 4 XML-файла:

edit_text_cursor.xml настраиваемая нарисованная прямоугольная форма, которая изменяет курсор EditText.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <solid android:color="@color/white"/>
        <size android:width="2dp"/>
</shape>

edit_text_underline.xml подчеркивание формы приСостояние EditText не сфокусировано

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

edit_text_underline_focused.xml Подчеркнутая форма при фокусе состояния EditText

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

edit_text_underline_selector.xml отображает различную форму, отображаемую в соответствии с состоянием EditText (в фокусе или нет).

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/edit_text_underline_focused" android:state_focused="true"/>
    <item android:drawable="@drawable/edit_text_underline" android:state_focused="false"/>
</selector>
изменить настройку EditText как выдал:

xml code

<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    app:collapseIcon="@drawable/ic_arrow_up_24dp"
    app:titleTextColor="@color/white"
    android:layout_alignParentTop="true"
    android:animateLayoutChanges="true"
    android:visibility="gone"
    android:alpha="0.0"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:gravity="center_vertical">
        <EditText
            android:id="@+id/edit_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:cursorVisible="true"
            android:focusable="true"
            android:focusableInTouchMode="true"
            android:hint="Search..."
            android:textColor="@color/white"
            android:background="@drawable/edit_text_underline_selector"
            android:textCursorDrawable="@drawable/edit_text_cursor"/>
    </LinearLayout>
</android.support.v7.widget.Toolbar>
0 голосов
/ 31 мая 2018

Это потому, что по умолчанию подчеркивание и курсор EditText имеют значение colorAccent.Итак, если вы хотите изменить их цвет на белый, то вы должны определить стиль в styles.xml следующим образом:

<style name="editText" parent="AppTheme">
    <item name="colorAccent">@color/white</item>
</style>

И затем применить этот стиль в качестве темы для редактирования текста следующим образом:

 <EditText
    android:id="@+id/edit_text"
    android:layout_width="match_parent"
    android:cursorVisible="true"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:layout_height="wrap_content"
    android:hint="Search..."
    android:textCursorDrawable="@color/white"
    android:textColor="@color/md_white_1000"
    android:theme="@style/editText"
    android:layout_marginRight="120dp"
    />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...