android - EditText কার্সার রঙ সেট করুন




android-edittext android-styles (12)

আমি এই সমস্যাটি করছি যেখানে আমি একটি ট্যাবলেট প্রকল্পে Android এর Holo থিম ব্যবহার করছি। যাইহোক, আমার স্ক্রিনে একটি টুকরো আছে যা একটি সাদা পটভূমি আছে। আমি এই টুকরা উপর একটি EditText উপাদান যোগ করছি। আমি Holo.Light থিম সংস্থার ব্যাকগ্রাউন্ড সেটিং করে থিম override করার চেষ্টা করেছি। যাইহোক, আমার টেক্সট কার্সার (ক্যারেট) সাদা থাকে এবং অতএব, পর্দায় অদৃশ্য (আমি এটি সম্পাদনা ক্ষেত্রের মধ্যে অস্পষ্টভাবে স্পট করতে পারি ..)।

কেউ কি জানেন যে আমি কিভাবে একটি গাঢ় কার্সার রঙ ব্যবহার করতে EditText পেতে পারি? আমি কোনও ইতিবাচক ফলাফল "@android:style/Widget.Holo.Light.EditText" শৈলী নির্ধারণ করার চেষ্টা করেছি।


আপনি নির্দিষ্ট রঙ চান আপনি AppCompatEditText তারপর ব্যাকআউট সেট নাল ব্যবহার করতে হবে

আমার জন্য কাজ কর

<android.support.v7.widget.AppCompatEditText
    android:background="@null"
    android:textCursorDrawable="@color/cursorColor"/>

এই জিস্ট দেখুন


আমার জন্য আমি AppTheme এবং একটি মান colors.xml উভয় সংশোধন করেছি

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorControlNormal">@color/yellow</item>
    <item name="colorAccent">@color/yellow</item>
</style>

এখানে রং.এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="yellow">#B7EC2A</color>
</resources>

আমি অ্যান্ড্রয়েডটি বের করে দিয়েছিলাম: টেক্সট ক্রসারড্রোভেবেল এট্রিবিউট @null যা আমি editText শৈলী ভিতরে রাখি। আমি এই ব্যবহার করার চেষ্টা করলে, রং পরিবর্তন হবে না।


আরেকটি সহজ সমাধান আপনার প্রোজেক্ট ফোল্ডারে res> values> colors.xml এ যেতে হবে এবং আপনি যে রংটি পছন্দ করেন তার রঙের উচ্চারণের মান সম্পাদনা করুন।

<color name="colorAccent">#000000</color>

উপরে কোড আপনার কার্সার কালো পরিবর্তন।


একমাত্র কার্যকর উত্তরটি কার্যকলাপের থিম পরিবর্তন করা উচিত: <item name="colorAccent">#000000</item> আপনাকে android:textCursorDrawable ব্যবহার করতে হবে না android:textCursorDrawable @null কারণ এটি শুধুমাত্র কার্সারকেই উদ্বেগ দেয় তবে পিন নয় আপনি কার্সারটি টেনে আনতে চান তবে কার্সারের নীচে। থিমিং সমাধান সবচেয়ে গুরুতর এক।


তার চেয়ে এমনকি সহজ।

<style name="MyTextStyle">
    <item name="android:textCursorDrawable">#000000</item>
</style>

এই ICS এবং অতিক্রম করে কাজ করে। আমি অন্যান্য সংস্করণে এটি পরীক্ষা করে নি।


পার্টির কাছে দেরী, এখানে আমার উত্তর,

এটি তাদের পিতামাতার থিমের colorAccent পরিবর্তন করতে চায় না এমন লোকেদের জন্য, তবে colorAccent বৈশিষ্ট্যাবলী পরিবর্তন করতে চায়!

এই উত্তর ডেমো কিভাবে পরিবর্তন করতে হবে ......

  1. নীচে লাইন রঙ
  2. কার্সার রঙ
  3. কার্সার পয়েন্টার রঙ (আমি আমার কাস্টম চিত্রটি ব্যবহার করেছি) .......... সম্পাদনা EditText প্রয়োগ শৈলী ব্যবহার করে EditText

<android.support.v7.widget.AppCompatEditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hey" />

উদাহরণ:

<style name="AppTheme.EditText" parent="@style/Widget.AppCompat.EditText">
    <item name="android:textColor">@color/white</item>
    <item name="android:textColorHint">#8AFFFFFF</item>
    <item name="android:background">@drawable/edit_text_background</item> // background (bottom line at this case)
    <item name="android:textCursorDrawable">@color/white</item>  // Cursor
    <item name="android:textSelectHandle">@drawable/my_white_icon</item> // For pointer normal state and copy text state
    <item name="android:textSelectHandleLeft">@drawable/my_white_icon</item>
    <item name="android:textSelectHandleRight">@drawable/my_white_icon</item>
</style>

এখন একটি edit_text_background (সম্পাদনা_ edit_text_background ) পটভূমির জন্য একটি সংস্থান xml যোগ করুন! আপনি চান হিসাবে আপনি কাস্টমাইজ করতে পারেন!

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="0dp"
        android:left="-3dp"   
        android:right="-3dp"
        android:top="-3dp">

        <shape android:shape="rectangle">
            <stroke
                android:width="1dp"
                android:color="@color/white"/>
        </shape>
    </item>
    </layer-list>

এখন আপনি আপনার কার্যকলাপ থিম এই শৈলী সেট করেছেন।

উদাহরণ:

আপনার ক্রিয়াকলাপে আপনার একটি থিম রয়েছে, editText এই কাস্টম সম্পাদনা editText থিমটি সেট করুন।

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Your Theme data -->
    <item name="editTextStyle">@style/AppTheme.EditText</item> // inculude this
</style>

মনে হচ্ছে যেন সব উত্তর ঝোপের চারপাশে যায়।

আপনার EditText , সম্পত্তিটি ব্যবহার করুন:

android:textCursorDrawable="@drawable/black_cursor"

এবং নিম্নরূপ হিসাবে আপনার সংস্থার drawable black_cursor.xml যুক্ত করুন:

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

আপনি প্রয়োজন হলে আরো বিভিন্ন কার্সার তৈরি করার উপায়।


যে কোনও ব্যক্তির জন্য ডায়নামিকভাবে EditText কার্সার রঙ সেট করতে হবে, EditText আপনি এটি অর্জনের দুটি উপায় পাবেন।

প্রথম, আপনার কার্সার আঁকা তৈরি করুন:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <solid android:color="#ff000000" />

    <size android:width="1dp" />

</shape>

কার্সার ড্রয়েবল রিসোর্স আইডি তৈরি করুন আপনার তৈরি করা ড্র্যাগেবেলে (https://github.com/android/platform_frameworks_base/blob/kitkat-release/core/java/android/widget/TextView.java#L562-564"> উৎস)) :

try {
    Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
    f.setAccessible(true);
    f.set(yourEditText, R.drawable.cursor);
} catch (Exception ignored) {
}

ডিফল্ট কার্সার ড্র্যাগযোগ্য রঙ পরিবর্তন করতে, আপনি নিম্নলিখিত পদ্ধতিটি ব্যবহার করতে পারেন:

public static void setCursorDrawableColor(EditText editText, int color) {
    try {
        Field fCursorDrawableRes = 
            TextView.class.getDeclaredField("mCursorDrawableRes");
        fCursorDrawableRes.setAccessible(true);
        int mCursorDrawableRes = fCursorDrawableRes.getInt(editText);
        Field fEditor = TextView.class.getDeclaredField("mEditor");
        fEditor.setAccessible(true);
        Object editor = fEditor.get(editText);
        Class<?> clazz = editor.getClass();
        Field fCursorDrawable = clazz.getDeclaredField("mCursorDrawable");
        fCursorDrawable.setAccessible(true);

        Drawable[] drawables = new Drawable[2];
        Resources res = editText.getContext().getResources();
        drawables[0] = res.getDrawable(mCursorDrawableRes);
        drawables[1] = res.getDrawable(mCursorDrawableRes);
        drawables[0].setColorFilter(color, PorterDuff.Mode.SRC_IN);
        drawables[1].setColorFilter(color, PorterDuff.Mode.SRC_IN);
        fCursorDrawable.set(editor, drawables);
    } catch (final Throwable ignored) {
    }
}

সর্বশেষ Appcompact v21 এ কার্সার রঙ পরিবর্তন করার একটি নতুন উপায় রয়েছে
শুধু এই মত শৈলী colorAccent পরিবর্তন:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette-->

    <!-- colorPrimary is used for the default action bar background -->
    <item name="colorPrimary">#088FC9</item>

    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">#088FC9</item>

    <!-- colorAccent is used as the default value for colorControlActivated
         which is used to tint widgets -->
    <!-- THIS IS WHAT YOU'RE LOOKING FOR -->
    <item name="colorAccent">#0091BC</item> 
</style>

তারপর আপনার অ্যাপ্লিকেশন থিম বা ক্রিয়াকলাপ এই শৈলী প্রয়োগ করুন।

আপডেট : এই ভাবে শুধুমাত্র API 21+ এ কাজ করে
আপডেট 2 : আমি এটি কাজ করতে পারেন যে সর্বনিম্ন Android সংস্করণ নিশ্চিত নই।
অ্যান্ড্রয়েড সংস্করণ দ্বারা পরীক্ষিত:

2.3.7 - didn't work
4.4.4 - worked
5.0 - worked
5.1 - worked

android:textCursorDrawable সেট করা android:textCursorDrawable এট্রিবিউটে @null ফলে android:textColor ব্যবহার করা উচিত android:textColor কার্সারের রং হিসাবে।

বৈশিষ্ট্যটি "পাঠ্যক্রমকার্যক্রমযোগ্য" API স্তরের 12 এবং তারপরে উপলব্ধ


<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">#36f0ff</item>
    <item name="colorPrimaryDark">#007781</item>
    <item name="colorAccent">#000</item>
</style>

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

শৈলী.এক্সএমএইচ রঙের রঙ পরিবর্তন করুন, এটি সহজ


Edittext cursor color you want changes your color.
   <EditText  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textCursorDrawable="@drawable/color_cursor"
    />

তারপর drawal xml: color_cursor তৈরি করুন

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




android-styles