সম্পাদনা পাঠের জন্য প্রথম অক্ষরের মূলধন


383

আমি কিছুটা ব্যক্তিগত টুডো তালিকা অ্যাপ্লিকেশনটিতে কাজ করছি এবং এখনও পর্যন্ত সবকিছু বেশ ভালভাবে কাজ করছে। আমি একটু বের করতে চাই। আমি যখনই কোনও নতুন আইটেম যুক্ত করতে যাই, আমার ভিতরে ডায়ালগ থাকে একটি সম্পাদনা পাঠের ভিতরে। আমি যখন সম্পাদনা পাঠ্য দর্শনটি নির্বাচন করি, কীবোর্ডটি পাঠ্য প্রবেশ করানো আসে, যেমনটি করা উচিত। বেশিরভাগ অ্যাপ্লিকেশনগুলিতে, ডিফল্টটিকে মনে হয় যে শিফট কীটি প্রথম অক্ষরের জন্য রাখা হয়েছে ... যদিও এটি আমার দেখার জন্য এটি করে না। ঠিক করার জন্য একটি সহজ উপায় থাকতে হবে তবে আমি বারবার রেফারেন্সটি অনুসন্ধান করেছি এবং এটি খুঁজে পাচ্ছি না। আমি ভাবছি অ্যাডাপ্টারে লোড হওয়া রেফারেন্সের জন্য একটি এক্সএমএল বৈশিষ্ট্য থাকতে হবে, তবে এটি কী তা আমি খুঁজে পাচ্ছি না।

উত্তর:


805

স্ট্যাটিকালি (যেমন আপনার লেআউট এক্সএমএল ফাইলটিতে): android:inputType="textCapSentences"আপনার সেট করুন EditText

প্রোগ্রামগতভাবে: আপনাকে এর InputType.TYPE_CLASS_TEXTমধ্যে অন্তর্ভুক্ত InputTypeকরতে হবে EditText, যেমন

EditText editor = new EditText(this); 
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

পাঠ্য এবং এর বিভিন্নতার সাথে একত্রিত করে প্রতিটি বাক্যটির প্রথম অক্ষরের মূলধনকে অনুরোধ করতে পারেন।

- Google ডক্স


5
টেস্টইডিটেক্সট.সেট ইনপুট টাইপ (ইনপুট টাইপ.টওয়াইপি.সি.এল.এস.এস.এস.এস.পি.এস। ইনপুট টাইপ.ওয়াইওয়ালপাটেক্স.এফএলজি_সিএপি_ওয়ার্ডস); বা অ্যান্ড্রয়েড: ইনপুটটাইপ = "টেক্সটক্যাপসেন্টিটিস" কেবল তখনই কাজ করবে যদি আপনার ডিভাইস কীবোর্ড অটো ক্যাপিটালাইজ সেটিংস সক্ষম করা থাকে।
লক্ষ্মণন

8
কেন এটি সক্ষম করার ফলে আমার android:lines="7"আর lines টি লাইন দেখা যাচ্ছে না (এটি এখন ১ লাইনের ডিফল্ট হবে)
জেমস ওয়েয়ারজবা

3
#EditText.setInputType (ইনপুট টাইপ। TYPE_CLASS_TEXT | ইনপুট টাইপ। TYPE_TEXT_FLAG_CAP_WORDS); বা অ্যান্ড্রয়েড: ইনপুটটাইপ = "টেক্সটক্যাপসেন্টিটিস" কেবল তখনই কাজ করবে যদি আপনার ডিভাইস কীবোর্ড অটো ক্যাপিটালাইজ সেটিংস সক্ষম করা থাকে। প্রোগ্রামেটিকভাবে এর বিকল্প কী?
সুইফট

@ জেমস ওয়েয়ারজবা আমি শিবাংয়ের উত্তরটি মাল্টি-লাইন সমর্থনের প্রতিক্রিয়া হিসাবে এখানে উল্লেখ করব। অ্যান্ড্রয়েড যুক্ত করুন: ইনপুটটাইপ = "টেক্সটক্যাপসেন্টিটিস | টেক্সট মাল্টিটলাইন"
লেনিন

76

android:inputType="textCapWords"আপনার এডিটেক্সট উপাদানটি ব্যবহার করুন ।

উদাহরণ স্বরূপ:

<EditText
    android:id="@+id/txtName"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_weight="0.7"
    android:inputType="textCapWords"
    android:textColorHint="#aaa"
    android:hint="Name Surname"
    android:textSize="12sp" />

রেফারেন্সের জন্য নিম্নলিখিত লিঙ্কটি দেখুন: http://developer.android.com/references/android/widget/TextView.html#attr_android%3ainputType


কোডটিকে উপাদানকে চিহ্নিত করার পরিবর্তে এটিকে সাহসী করা ভাল অনুশীলন।
রবি ভট্ট

13
এই উত্তরটি ওপির প্রশ্নে সত্যই সহায়তা করে না। এটি প্রতিটি শব্দের জন্য প্রথম অক্ষরকে বড় করে তুলবে , ইনপুট পাঠ্যের প্রথম অক্ষর নয় (যা একটি বাক্য হিসাবে ধরে নেওয়া হয়)। যদিও এটি সম্ভবত অন্যদের সহায়তা করতে পারে, সঠিক উত্তরটি হ'ল গৃহীত উত্তর।
অ্যান্ড্রু টি।

37

এক্সএমএলে আপনার সম্পাদনা পাঠ্যে নিম্নলিখিত লাইনটি প্রয়োগ করুন।

android:inputType="textCapSentences|textMultiLine"

এটি মাল্টি-লাইন সমর্থনের অনুমতি দেবে।


2
এটি একটি গ্রহণযোগ্য উত্তর হওয়া উচিত, কারণ এটিই একমাত্র সমাধান যা
এডিটেক্সটকে

31
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);   

বা android:inputType="textCapSentences"কেবলমাত্র কাজ করবে যদি আপনার ডিভাইস কীবোর্ড অটো ক্যাপিটালাইজ সেটিং সক্ষম করে।


ধন্যবাদ, আমি আটকে গিয়েছিলাম কারণ আমি সবেমাত্র ডিভাইস কীবোর্ড অটো ক্যাপিটালাইজ
সেটিংটি

20

আমি একই সমস্যার মুখোমুখি হয়েছি, আমি যা খুজে পেয়েছি তা ভাগ করে নিচ্ছি। আপনাকে এবং অন্যদের সাহায্য করতে পারে ...

আপনার নিচের লাইন আপনার layout.add এই চেষ্টা EditText

android:inputType="textCapWords|textCapSentences"

আমার উপর ভাল কাজ করে .. আশা করি এটি আপনার উপরও কাজ করে ...


5

আমি আপনাকে উভয়কেই উত্তর দিতে পারি যে উত্তরগুলি প্রথম অক্ষরের মূলধন তৈরি করবে এবং এডিটেক্সট একক লাইন তৈরি করবে না।

আপনি যদি এটি XMl তে করতে চান তবে নীচের কোডটি

android:inputType="textCapWords|textCapSentences"

ক্রিয়াকলাপ / খণ্ড ইত্যাদিতে এটি করতে চাইলে নীচে কোডটি দেওয়া হবে

momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE)

PS: আপনার যদি অন্য সম্পত্তিও নেই তবে আপনি সহজেই এটি একটি পাইপ দিয়ে যুক্ত করতে পারেন "|" প্রতীক, কেবল এটি নিশ্চিত করে নিন যে অ্যাট্রিবিউট বৈশিষ্ট্যের মধ্যে xML তে কোনও স্থান নেই


5

সম্পাদনা পাঠ্যে মূলধনের জন্য আপনি নীচের দুটি ইনপুট প্রকার চয়ন করতে পারেন:

  1. অ্যান্ড্রয়েড ইনপুট = "textCapSentences"
  2. অ্যান্ড্রয়েড ইনপুট = "textCapWords"

TextCapSentences
এটি প্রতিটি বাক্যে ক্যাপিটাল হিসাবে প্রথম শব্দের প্রথম অক্ষরটি দেবে।

টেক্সটক্যাপওয়ার্ডস এটি প্রতিটি শব্দের প্রথম অক্ষরকে মূলধনী হিসাবে দেয়।

আপনি উভয় বৈশিষ্ট্য চাইলে কেবল ব্যবহার করুন | উভয় বৈশিষ্ট্য সহ স্বাক্ষর করুন

android:inputType="textCapSentences|textCapWords"

3

এই কোডটি ব্যবহার করে দেখুন, এটি সমস্ত শব্দের প্রথম চরিত্রকে বড় করে তুলবে।

- সম্পাদনা পাঠ্য দর্শনটির জন্য addTextChangedListener সেট করুন

edt_text.addTextChangedListener (প্রহরী);

- পাঠ্য ওয়াচচার যুক্ত করুন

TextWatcher watcher = new TextWatcher() {
    int mStart = 0;

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        mStart = start + count;
    }

    @Override
    public void afterTextChanged(Editable s) {
        String input = s.toString();
        String capitalizedText;
        if (input.length() < 1)
            capitalizedText = input;
        else if (input.length() > 1 && input.contains(" ")) {
            String fstr = input.substring(0, input.lastIndexOf(" ") + 1);
            if (fstr.length() == input.length()) {
                capitalizedText = fstr;
            } else {
                String sstr = input.substring(input.lastIndexOf(" ") + 1);
                sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1);
                capitalizedText = fstr + sstr;
            }
        } else
            capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1);

        if (!capitalizedText.equals(edt_text.getText().toString())) {
            edt_text.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {

                }

                @Override
                public void afterTextChanged(Editable s) {
                    edt_text.setSelection(mStart);
                    edt_text.removeTextChangedListener(this);
                }
            });
            edt_text.setText(capitalizedText);
        }
    }
};

3

মূলধন রূপান্তর করতে, আপনি সম্পাদনা পাঠ্যের সাহায্যে নিম্নলিখিতটি করতে পারেন:

প্রতিটি শব্দের প্রথম অক্ষর মূলধন করতে :

android:inputType="textCapWords"

প্রতিটি বাক্যের প্রথম অক্ষরের মূলধন তৈরি করতে :

android:inputType="textCapSentences"

করতে প্রতি চিঠি রাজধানী:

android:inputType="textCapCharacters"

তবে এটি কেবল কীবোর্ডে পরিবর্তন আনবে এবং ব্যবহারকারী ছোট ক্ষেত্রে চিঠি লিখতে মোড পরিবর্তন করতে পারে।

সুতরাং আপনি যদি সত্যিই মূলধন বিন্যাসে ডেটা চান তবে প্রথমে নিম্নলিখিত শ্রেণিটি যুক্ত করুন: এই পদ্ধতির খুব বেশি প্রশংসা করা হবে না:

public class CapitalizeFirstLetter {
    public static String capitaliseName(String name) {
        String collect[] = name.split(" ");
        String returnName = "";
        for (int i = 0; i < collect.length; i++) {
            collect[i] = collect[i].trim().toLowerCase();
            if (collect[i].isEmpty() == false) {
                returnName = returnName + collect[i].substring(0, 1).toUpperCase() + collect[i].substring(1) + " ";
            }
        }
        return returnName.trim();
    }
    public static String capitaliseOnlyFirstLetter(String data)
    {
        return data.substring(0,1).toUpperCase()+data.substring(1);
    }
}

এবং তারপর,

এখন প্রতিটি শব্দ মূলধন করতে:

CapitalizeFirstLetter.capitaliseName(name);

শুধুমাত্র প্রথম শব্দটি মূলধন করতে:

CapitalizeFirstLetter.capitaliseOnlyFirstLetter(data);

2

এক্সএমএল এবং পাশাপাশি জাভা ফাইলে ইনপুট প্রকার সেট করুন,

এক্সএমএলে,

অ্যান্ড্রয়েড ইনপুট = "textMultiLine | textCapSentences"

এটি মাল্টলাইন এবং জাভা ফাইলেও অনুমতি দেবে ,

edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

আপনার কীবোর্ডের অটো-ক্যাপিটালাইজেশন সেটিংস সক্ষম হয়েছে তা নিশ্চিত করুন ।


2

আপনার বিন্যাসে এক্সএমএল ফাইল:

  • সেট android:inputType="textCapSentences"

  • আপনার উপর EditTextরাজধানী হিসেবে প্রতিটি বাক্যের প্রথম শব্দের প্রথম বর্ণমালা আছে

  • বা android:inputType="textCapWords"আপনার সম্পাদনা পাঠ্যকে প্রতিটি শব্দের প্রথম বর্ণমালা মূলধন হিসাবে থাকতে হবে


1

এই কোডটি সম্পাদনা পাঠের জন্য কেবল প্রথম বর্ণের মূলধনকে ব্যবহার করুন

MainActivity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/et"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:tag="true">
    </EditText>

</RelativeLayout>

MainActivity.java

EditText et = findViewById(R.id.et);
        et.addTextChangedListener(new TextWatcher() {
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            }

            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
            {
                if (et.getText().toString().length() == 1 && et.getTag().toString().equals("true"))
                {
                    et.setTag("false");
                    et.setText(et.getText().toString().toUpperCase());
                    et.setSelection(et.getText().toString().length());
                }
                if(et.getText().toString().length() == 0)
                {
                    et.setTag("true");
                }
            }

            public void afterTextChanged(Editable editable) {

            }
        });

0

আগে এটি আগে থাকত android:capitalize="words", যা এখন অবনমিত। প্রস্তাবিত বিকল্প ব্যবহার করা হয়android:inputType="textCapWords"

দয়া করে মনে রাখবেন যে এটি কেবল তখনই কাজ করবে যদি আপনার ডিভাইস কীবোর্ড অটো ক্যাপিটালাইজ সেটিংস সক্ষম করে।

এটি অগ্রগতিমূলকভাবে করতে, নিম্নলিখিত পদ্ধতিটি ব্যবহার করুন:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);


0

আমি প্রতিষ্ঠিত করেছি এবং আমার সমাধান: জাভাতে এটি সমাধান করার জন্য আপনার কাছে দুটি উপায় রয়েছে:

 testEditText.setInputType(InputType.TYPE_CLASS_TEXT 
 | InputType.TYPE_TEXT_FLAG_CAP_WORDS);   

এবং এক্সএমএল:

 <EditText
android:id="@+id/mytxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:textSize="12sp" />


0

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

অ্যান্ড্রয়েড সরান: ইনপুটটাইপ সম্পত্তি এবং নীচের লাইন যুক্ত করুন

<item name="android:capitalize">words</item>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.