অ্যান্ড্রয়েড, কিভাবে টেক্সটভিউয়ের প্রস্থ সীমাবদ্ধ করবেন (এবং পাঠ্যের শেষে তিনটি বিন্দু যুক্ত করবেন)?


317

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

<TextView 
        android:id                      = "@+id/tvFixture"
        android:layout_width            = "wrap_content"
        android:layout_height           = "wrap_content"
        android:layout_toLeftOf         = "@id/ivFixture_Guest"
        android:text                    = "@string/test_06"
        android:lines                   = "1"
        android:ems                     = "3"
        android:gravity                 = "right"
        style                           = "@style/simpletopic.black" 
        android:ellipsize="end"/>

উত্তর:


690

থামানো হয়েছে:

android:singleLine="true"আপনার পাঠ্যদর্শনটিতে আরও একটি সম্পত্তি যুক্ত করুন

আপডেট করা হয়েছে:

android:ellipsize="end" 
android:maxLines="1"

3
আমি যখন এটি চেষ্টা করেছি তখন অবশ্যই সিঙ্গললাইন প্রয়োজন। যদিও এটি অবমানিত বলে।
EGHDK

41
অ্যান্ড্রয়েড: সিঙ্গললাইন = "সত্য" হ্রাস করা হয়েছে এবং এর খারাপ পার্শ্ব প্রতিক্রিয়া রয়েছে। অ্যান্ড্রয়েড ব্যবহার করুন: এর পরিবর্তে উপবৃত্তাকার = "শেষ" এবং ম্যাক্সলাইন = "1"
হামিদ্রেজা হোসেইনখানি

1
ব্যবহারের "খারাপ পার্শ্ব প্রতিক্রিয়া" কী কী singleLine? আরও দেখুন: এক্সএমএল অ্যাট্রিবিউট সিঙ্গললাইন অ্যান্ড্রয়েডে অবনতিযুক্ত বা না?
সুরগাচ

1
বিটিডাব্লু, অ্যান্ড্রয়েড: আপনি চাইলে ম্যাক্সলাইনগুলি 1 টিরও বেশি হতে পারে :)
ট্যুর হোল্ডার

1
এই চিত্রটি কি কেউ পেয়েছেন "ডাব্লু / স্ট্যাটিকলয়েট: ম্যাক্সলাইনহাইট -১ হওয়া উচিত নয়? ম্যাক্সলাইনস: 1 লাইনকাউন্ট: 1">?
শীতল আইসিসি 26'18

157

TextViewএকক লাইনে (তিনটি বিন্দু সহ এবং এর বাইরে) জোর করার জন্য বিভিন্ন বিকল্পের সাথে চারপাশে খেলতে শিখেছি নীচেরটি।

এখানে চিত্র বর্ণনা লিখুন

অ্যান্ড্রয়েড maxLines = "1"

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:text="one two three four five six seven eight nine ten" />

এটি কেবল পাঠ্যকে এক লাইনে বাধ্য করে। কোনও অতিরিক্ত পাঠ্য লুকানো আছে।

সম্পর্কিত:

ellipsize = "শেষ"

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:ellipsize="end"
    android:text="one two three four five six seven eight nine ten" />

এটি প্রাপ্য নয় এমন পাঠ্যটি কেটে দেয় তবে ব্যবহারকারীদের জানতে চান যে একটি উপবৃত্ত (তিনটি বিন্দু) যোগ করে পাঠ্যটি কাটা হয়েছে।

সম্পর্কিত:

ellipsize = "তাবু"

<TextView
    android:id="@+id/MarqueeText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:singleLine="true"
    android:ellipsize="marquee"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:text="one two three four five six seven eight nine ten" />

এটি টেক্সটভিউ জুড়ে পাঠ্যটিকে স্বয়ংক্রিয়ভাবে স্ক্রোল করে তোলে। মনে রাখবেন যে কখনও কখনও এটি কোডে সেট করা প্রয়োজন:

textView.setSelected(true);

মনে করা হয় android:maxLines="1"এবং android:singleLine="true"মূলত একই জিনিসটি করা উচিত এবং যেহেতু সিঙ্গললাইন স্পষ্টতই হ্রাস পেয়েছে আমি এটি ব্যবহার না করা পছন্দ করব তবে আমি যখন এটি বের করি তখন মার্কি আর স্ক্রোল করে না। গ্রহণmaxLines আউট যদিও এটা কোনো প্রভাব পড়ে না।

সম্পর্কিত:

স্ক্রোলহোরাইজেন্টালি সহ অনুভূমিকস্ক্রোলভিউ

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/horizontalScrollView">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:scrollHorizontally="true"
        android:text="one two three four five six seven eight nine ten" />
</HorizontalScrollView>

এটি ব্যবহারকারীকে পাঠ্যের পুরো লাইনটি ম্যানুয়ালি স্ক্রোল করতে দেয়।


তবে এটি প্রতিটি শব্দের শেষে ellipsizing হয়। খুব_ লম্বা_শব্দ_বিহীন_উইটস্পেসের মাঝে ... যোগ করার কোনও উপায় আছে কি?
টোবিয়াস রিখ

@ তোবিয়াস রিচ, আমি এটি সম্পাদন করার জন্য কোনও বিল্ট সম্পর্কে সচেতন নই। আপনি পেইন্ট.মেজারটেক্সট ব্যবহার করে নিজের তৈরি করতে পারেন ।
সুরগাচ

কখনও কখনও আপনার অ্যাপ্লিকেশনটির প্রয়োজন হতে পারে: লেআউট_ কনট্রেনড ওয়েডথ = "সত্য"
ড্যান

80

আপনার লেআউট ফাইলটিতে টেক্সটভিউয়ের এই সম্পত্তিটি ব্যবহার করে দেখুন ..

android:ellipsize="end"
android:maxLines="1"

31

আমি এটি গ্রহণ করি আপনি প্রস্থকে এক লাইনে সীমাবদ্ধ করতে চান এবং অক্ষর দ্বারা সীমাবদ্ধ করতে চান না? যেহেতু singleLineঅবহেলিত, আপনি নীচে একসাথে ব্যবহার করে দেখতে পারেন:

android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"

13

যেমন। তুমি ব্যবহার করতে পার

android:maxLength="13"

এটি টেক্সভিউ দৈর্ঘ্য 13 এ সীমাবদ্ধ করবে তবে সমস্যাটি যদি আপনি 3 টি বিন্দু (...) যুক্ত করার চেষ্টা করেন তবে এটি এটি প্রদর্শন করবে না, কারণ এটি পাঠ্যদর্শন দৈর্ঘ্যের অংশ হবে।

     String userName;
     if (data.length() >= 13) {
            userName = data.substring(0, 13)+ "...";

     } else {

            userName = data;

    }
        textView.setText(userName);

এগুলি ছাড়াও আপনাকে ব্যবহার করতে হবে

 android:maxLines="1"

2
আপনার "..." এর পরিবর্তে "20 u2026" ব্যবহার করা উচিত
Zharro

এটি ঠিক উদাহরণ হিসাবে ছিল। যদি আমি স্ট্রিংস.এক্সএমএল স্ট্রিংগুলি রাখি তবে অবশ্যই আমি ইউনিকোডে যাব। কোন নির্দিষ্ট কারণ আপনি এখানে রাখতে চান?
নয়নেশ গুপ্তে 14'15

2
নাঃ। আমি ব্যক্তিগতভাবে সম্প্রতি ইউনিকোডে এই চরিত্রটির অস্তিত্ব সম্পর্কে জানতে পেরেছি এবং এই জ্ঞানটি ভাগ করে নেওয়ার সিদ্ধান্ত নিয়েছি;)
ঝাড়ো

6

ব্যবহার

  • android:singleLine="true"
  • android:maxLines="1"
  • app:layout_constrainedWidth="true"

এটি আমার সম্পূর্ণ TextViewচেহারা কেমন:

    <TextView
    android:id="@+id/message_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="5dp"
    android:maxLines="1"
    android:singleLine="true"
    android:text="NAME PLACEHOLDER MORE Text"
    android:textColor="@android:color/black"
    android:textSize="16sp"

    android:textStyle="bold"
    app:layout_constrainedWidth="true"
    app:layout_constraintEnd_toStartOf="@id/message_check_sign"
    app:layout_constraintHorizontal_bias="0"
    app:layout_constraintStart_toEndOf="@id/img_chat_contact"
    app:layout_constraintTop_toTopOf="@id/img_chat_contact" />

<কোড> টেক্সটভিউ </ কোড> এর ছবি


5

আমি দিগন্তীয় পুনর্ব্যবহারযোগ্য ব্যবহার করছি।
1) এখানে কার্ডভিউতে টেক্সটভিউ ব্যবহার করার সময় উল্লম্বভাবে বিকৃত হয়ে যায়

android:ellipsize="end"
android:maxLines="1"

বোল্ড টেক্সটভিউস উইম্যান গ্রুপ, জাসকলস্কি পরীক্ষা করুন ... এখানে চিত্র বর্ণনা লিখুন

2) তবে যখন আমি উপবৃত্তাকার সাথে সিঙ্গললাইন ব্যবহার করি -

android:ellipsize="end"
android:singleLine="true"

বোল্ড টেক্সটভিউস উইম্যান গ্রুপ, জাসকলস্কি পরীক্ষা করুন ... এখানে চিত্র বর্ণনা লিখুন

২ য় সমাধান আমার জন্য সঠিকভাবে কাজ করেছে (সিঙ্গললাইন ব্যবহার করে)। এছাড়াও আমি ওএস সংস্করণে পরীক্ষা করেছি: ৪.১ এবং তার উপরে (৮.০ অবধি), এটি কোনও ক্র্যাশ ছাড়াই দুর্দান্ত কাজ করছে।


4

কোড:

TextView your_text_view = (TextView) findViewById(R.id.your_id_textview);
your_text_view.setEllipsize(TextUtils.TruncateAt.END);

XML:

android:maxLines = "5"

যেমন

মথি 13 এ, শিষ্যরা যীশুকে জিজ্ঞাসা করেছিলেন, কেন তিনি দৃষ্টান্তগুলিতে লোকদের সাথে কথা বলেছিলেন। তিনি উত্তর দিলেন, "স্বর্গরাজ্যের রহস্য জানার জন্য আপনাকে দেওয়া হয়েছিল, কিন্তু তাদের কাছে তা দেওয়া হয়নি।

আউটপুট: ম্যাথু 13 এ শিষ্যরা যীশুকে জিজ্ঞাসা করেছিলেন, কেন তিনি দৃষ্টান্তগুলিতে লোকদের সাথে কথা বলেছিলেন। তিনি উত্তর দিয়েছিলেন, "এটি আপনাকে জানার জন্য দেওয়া হয়েছে ...


4

আমি ব্যবহার করে কাঙ্ক্ষিত ফলাফল পেয়েছি

android:maxLines="2"
android:minLines="2"
android:ellipsize="end"

কৌশলটি ম্যাক্সলাইনস এবং মিনিলাইনগুলি একই মান হিসাবে সেট করা হয়েছে ... এবং কেবল অ্যান্ড্রয়েড নয়: লাইন = "2", কৌশলটি করবেন না। এছাড়াও আপনি কোনও হ্রাস করা গুণাবলী এড়িয়ে চলেছেন।


4

পাঠ্যদর্শনটির জন্য আপনার লেআউটে নিম্নলিখিত লাইনগুলি যুক্ত করতে হবে

android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"

আশা করি এটি আপনার পক্ষে কাজ করে।


3

আপনি আপনার পাঠ্যদর্শনটির অক্ষরের সংখ্যা সীমাবদ্ধ করতে পারেন এবং পাঠ্যের পরে (...) যুক্ত করতে পারেন। ধরুন আপনাকে কেবল 5 টি অক্ষর দেখাতে হবে এবং তার পরে আপনাকে (...) দেখাতে হবে, কেবল নিম্নলিখিতটি করুন:

String YourString = "abcdefghijk";

if(YourString.length()>5){

YourString  =  YourString.substring(0,4)+"...";

your_text_view.setText(YourString);
}else{

 your_text_view.setText(YourString); //Dont do any change

}

একটু হ্যাক ^ _ ^। যদিও এটি একটি ভাল সমাধান নয়। তবে একটি কাজ যা আমার পক্ষে কাজ করেছিল: ডি

সম্পাদনা: আপনার সীমিত নম্বর অনুযায়ী আমি কম চরিত্রের জন্য চেক যুক্ত করেছি। অক্ষর।



3

এর সাথে কাজ করা জন্য অ্যান্ড্রয়েড ellipsize অ্যাট্রিবিউট, আপনি নিয়ন্ত্রণ করতে লেআউট প্রস্থ এর TextView , যেমন যে টেক্সট TextView দৃশ্যে থেকে সীমার বাইরে।

সুতরাং, অ্যান্ড্রয়েড: লেআউট_উইথ অ্যাট্রিবিউট এখানে মূল ভূমিকা পালন করে, সেই অনুযায়ী সেট করুন।

একটি উদাহরণ হতে পারে:

<TextView        
    android:layout_width="120dp"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:text="This is a very long text to be displayed"
    android:textSize="12sp"
    android:maxLines="1"            
     />

এখন, এখানে যদি অ্যান্ড্রয়েডে পাঠ্য হয় : পাঠ্য = "এটি প্রদর্শিত হতে খুব দীর্ঘ পাঠ্য" একটি অ্যান্ড্রয়েডের সাথে টেক্সটভিউ থেকে দেখার বাইরে চলে যায় : লেআউট_উইথ = "120 ডিপি" , অ্যান্ড্রয়েড: উপবৃত্তাকার = "শেষ" পাঠ্য কেটে যাবে এবং এর পরে ... (3 বিন্দু) রাখুন। অর্থাৎ এটি খুব দীর্ঘ ... টেক্সটভিউতে প্রদর্শিত হবে।



2

আপনি এই লাইনটি এক্সএমএলে লিখতে পারেন যেখানে আপনি নিবেন textview:

android:singleLine="true"

2

@ আজহারশাইখ এর পদ্ধতির কাজটি ভাল কাজ করে।

android:ellipsize="end"
android:maxLines="1"

তবে আমি বুঝতে পারি যে টেক্সটভিউ শব্দের দ্বারা ডিফল্ট হবে (ডিফল্টরূপে)। আমাদের মতো পাঠ্য থাকলে তা দেখান:

দীর্ঘ_লাইন_বিহীন_আপনি_স্পেস_আবিসিডিফঘ পরীক্ষা করুন

টেক্সটভিউ প্রদর্শিত হবে:

পরীক্ষা ...

এবং আমি এই সমস্যাটি পরিচালনা করার সমাধান খুঁজে পেয়েছি, ইউনিকোড নো-ব্রেক ব্রেক স্পেস অক্ষর দিয়ে স্পেসগুলি প্রতিস্থাপন করব, এটি শব্দের পরিবর্তে অক্ষরগুলিতে টেক্সটভিউ মোড়কে তোলে:

yourString.replace(" ", "\u00A0");

ফলাফল:

দীর্ঘ_লাইন_বিহীন_আপনি_স্পেস_আবিসি পরীক্ষা করুন ...


2
        <TextView
            android:id="@+id/product_description"
            android:layout_width="165dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:text="Pack of 4 summer printed pajama"
            android:textColor="#d2131c"
            android:textSize="12sp"
            android:maxLines="2"
            android:ellipsize="end"/>


0

আপনি এটি দ্বারা এটি করতে পারেন xml:

<TextView 
    android:id="@+id/textview"
    android:maxLines="1" // or any number of lines you want
    android:ellipsize="end"
    />

আমি সম্পত্তিটির কোনও সমাধানের Dotsসাথে 3 @ প্রান্তটি কীভাবে রাখতে পারি maxLength="35"?
সাগর

-1

আপনি শুধু পরিবর্তন ...

android:layout_width="wrap_content"

লাইন নীচে এটি ব্যবহার করুন

android:layout_width="match_parent"

.......

   <LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerVertical="true"
       android:layout_marginLeft="10dp"
       android:layout_marginTop="10dp"
       android:layout_toRightOf="@+id/visitBox"
       android:orientation="vertical" >

             <TextView
                  android:id="@+id/txvrequestTitle"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:singleLine="true"
                  android:text="Abcdefghighiklmnon"
                  android:textAppearance="? 
                  android:attr/textAppearanceLarge"
                  android:textColor="@color/orange_color" />

   </LinearLayout>

সিঙ্গললাইন হ্রাস করা হয়েছে
নিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.