অ্যান্ড্রয়েড: পাঠ্যদর্শনটির শেষ লাইনটি কেটে গেছে


113

আমার পাশের পাশে একটি অনুভূমিক LinearLayoutরয়েছে যার TextViewপরে রয়েছে Spinner। এটির মধ্যে থাকা LinearLayoutস্থির উল্লম্ব ক্ষেত্রে এটি গতিশীলভাবে একাধিকবার স্ফীত হয় ।LinearLayoutRelativeLayout

সমস্যা হল যেহেতু আমি থেকে জাগ্রত হয় Theme.lightথেকে Theme.holo.light, শেষ লাইন TextViewঅর্ধেক কাটা পায়। যখন ডায়নামিক পাঠ্য দীর্ঘ হয় এবং একাধিক সারি বিস্তৃত হয় তখন এটি ঘটে।

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

আমি অনুভূমিক নীচে প্যাডিং যোগ করে এটির সমাধান করতে সক্ষম হয়েছে LinearLayoutধারণকারী TextViewএবং Spinner

এটি কোনও ফিক্সের মতো মনে হয় না তবে আরও একটি হ্যাক। কেউ দয়া করে কীভাবে এটি সঠিকভাবে ঠিক করবেন সে সম্পর্কে আমাকে কিছু পরামর্শ দিতে পারেন?

আমি অন্যান্য কিছু প্রশ্নও পড়েছি, তবে কারওর পক্ষে মনে হয় না help

অনুভূমিক রৈখিক বিন্যাস:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_marginRight="20dp"
        android:text="TextView"/>

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

আপেক্ষিক লেআউট যেখানে উপরের লেআউটটি গতিশীলভাবে লিনিয়ার লেআউটে আইডি ll2_7 দ্বারা স্ফীত হয়:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/relLayoutButtonNext"
        android:layout_below="@id/textView1" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="20dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="10dp" >

            <TextView
                android:id="@+id/textView10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingRight="30dp"
                android:text="2.7" />

            <TextView
                android:id="@+id/textView11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:layout_toRightOf="@id/textView10"
                android:text="@string/question2_7" />


            <LinearLayout
                android:id="@+id/ll2_7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView11"
                android:layout_below="@+id/textView11"
                android:orientation="vertical" android:layout_marginBottom="20dp">
            </LinearLayout>

        </RelativeLayout>

    </ScrollView>

</RelativeLayout>

সম্পাদনা: উপরের জন্য এখানে সম্পূর্ণ লেআউট এক্সএমএল:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        style="@style/question_section_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="@string/question2_header" />

    <RelativeLayout
        android:id="@+id/relLayoutButtonNext"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/bottomBar"
        android:paddingBottom="3dp"
        android:paddingLeft="50dp"
        android:paddingRight="50dp"
        android:paddingTop="3dp" >

        <Button
            android:id="@+id/buttonNext"
            android:layout_width="180dp"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:onClick="nextStep"
            android:text="Next Section"
            android:textSize="20sp" />

        <Button
            android:id="@+id/buttonPrevious"
            android:layout_width="180dp"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:onClick="previousStep"
            android:text="Previous Section"
            android:textSize="20sp" />
    </RelativeLayout>


    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/relLayoutButtonNext"
        android:layout_below="@id/textView1" >



        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="20dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="10dp" >

            <TextView
                android:id="@+id/textView10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingRight="30dp"
                android:text="2.7" />

            <TextView
                android:id="@+id/textView11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:layout_toRightOf="@id/textView10"
                android:text="@string/question2_7" />


            <LinearLayout
                android:id="@+id/ll2_7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView11"
                android:layout_below="@+id/textView11"
                android:orientation="vertical" android:layout_marginBottom="20dp">

            </LinearLayout>

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView10"
                android:layout_below="@+id/ll2_7"
                android:text="2.8" />

            <TextView
                android:id="@+id/textView3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/ll2_7"
                android:layout_toRightOf="@+id/textView10"
                android:text="@string/question2_8" android:layout_marginBottom="10dp"/>


            <LinearLayout
                android:id="@+id/ll2_8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView3"
                android:layout_below="@+id/textView3"
                android:layout_marginBottom="20dp"
                android:orientation="vertical" >

            </LinearLayout>

            <TextView
                android:id="@+id/textView4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView2"
                android:layout_below="@+id/ll2_8"
                android:text="2.9" />

            <TextView
                android:id="@+id/textView5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/ll2_8"
                android:layout_toRightOf="@+id/textView10"
                android:text="@string/question2_9" android:layout_marginBottom="10dp"/>


            <LinearLayout
                android:id="@+id/ll2_9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView5"
                android:layout_toRightOf="@+id/textView10"
                android:orientation="vertical" android:layout_marginBottom="20dp">

            </LinearLayout>

            <TextView
                android:id="@+id/textView6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView4"
                android:layout_below="@+id/ll2_9"
                android:text="2.10" />

            <TextView
                android:id="@+id/textView7"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/ll2_9"
                android:layout_toRightOf="@+id/textView10"
                android:text="@string/question2_10" android:layout_marginBottom="10dp"/>


            <LinearLayout
                android:id="@+id/ll2_10"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView7"
                android:layout_marginBottom="20dp"
                android:layout_toRightOf="@+id/textView10"
                android:orientation="vertical" >

            </LinearLayout>

            <TextView
                android:id="@+id/textView8"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView6"
                android:layout_below="@+id/ll2_10"
                android:text="2.11" />

            <TextView
                android:id="@+id/textView9"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/ll2_10"
                android:layout_toRightOf="@+id/textView10"
                android:text="@string/quesiton2_11" android:layout_marginBottom="10dp"/>


            <LinearLayout
                android:id="@+id/ll2_11"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView9"
                android:layout_below="@+id/textView9"
                android:orientation="vertical" android:layout_marginBottom="20dp">

            </LinearLayout>

            <TextView
                android:id="@+id/textView12"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignLeft="@+id/textView8"
                android:layout_below="@+id/ll2_11"
                android:text="2.11.1" />

            <TextView
                android:id="@+id/textView13"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/ll2_11"
                android:layout_toRightOf="@+id/textView10"
                android:text="@string/question2_11_1" android:layout_marginBottom="10dp"/>


            <LinearLayout
                android:id="@+id/ll2_11_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView13"
                android:layout_toRightOf="@+id/textView10"
                android:orientation="vertical" android:layout_marginBottom="20dp">

            </LinearLayout>

        </RelativeLayout>

    </ScrollView>

</RelativeLayout>

অ্যান্ড্রয়েড সরানোর চেষ্টা করুন: প্যাডিংবটম = "20 ডিপি"
ধীরেশ সিং

2
পাঠ্যদর্শন এবং রৈখিক বিন্যাসের মার্জিনের উপরে প্যাডিং চেষ্টা করুন একটি
দুর্দান্ত

আনুভূমিকভাবে ব্যবহার করা হলে লিনিয়ারলআউট সত্যিই সমস্যাযুক্ত। পরিবর্তে কনস্ট্রেন্টলয়েট ব্যবহার করুন। দেখা. stackoverflow.com/a/48677954/630668
ধর্মেন্দ্র

উত্তর:


55

স্ক্রিনশটটিতে প্রদর্শিত একই কাট-অফ সমস্যার মুখোমুখি হয়েছি। এটি অনুভূমিকের বেসলাইন প্রান্তিককরণের কারণে ঘটে LinearLayout। হরফ আকারের পার্থক্যের কারণে TextViewএবং এর Spinnerবিভিন্ন বেসলাইন রয়েছে। সমস্যাটি সমাধানের জন্য বিন্যাসের জন্য বেসলাইন প্রান্তিককরণটি সেট করে অক্ষম করা দরকার:

android:baselineAligned="false"

বা কোডে:

layout.setBaselineAligned(false);

2
আমি যদি এই 100 বার ভোট দিতে পারি! আমি এই ইস্যুতে গত কয়েকদিনে অনেক সময় নষ্ট করেছি, এবং আপনার উত্তরটি আমার সমাধান ছিল! এতদিন কী চলছে তা আমি বুঝতে পারি নি কারণ অ্যান্ড্রয়েডে ভিউ হায়ারার্কি ডিবাগ করা এত কঠিন। অনেক ধন্যবাদ!!!
mbm29414

রাইনার্ডের উত্তর ছাড়াও এটিই ছিল আমার সমস্যার সমাধান। ধন্যবাদ!
জেমস ডবসন

1
এটি সঠিক উত্তর এবং এটি ত্রুটি হওয়ার কারণ কী তা নির্দেশ করে। ধন্যবাদ।
হোয়াং এনগুইন হুউ

এটি এই জাতীয় পরিস্থিতিতে বিশাল টিপ। মোটেও খারাপ নয়। ধন্যবাদ!
সানলওভার 3

260

এক মিলিয়ন বিভিন্ন জিনিস চেষ্টা করার পরে, আমি মনে করি এর উত্তর আমার কাছে আছে।

আমি LayoutGravityটেক্সটভিউ আইটেমটিতে একটি প্রয়োগ করেছি :

android:layout_gravity="fill"

আমার যে সমস্ত ক্লিপিং সমস্যা ছিল তা সমাধান করার জন্য মনে হচ্ছে। আশা করি এটি একই সমস্যাযুক্ত কাউকে সহায়তা করবে।


12
নিখুঁত, tnx, +1; নোট করুন যে অনেকগুলি লেআউট_গ্রাভিটি মানগুলি যেমন সহায়তা করে। সেন্টার_ভারটিকাল
দেব

2
যেখানে এটি কাজ করে না, সেখানে "1sp" এর প্যাডিং মান যুক্ত হওয়া উচিত। আমি প্রসারিত একটি শৈলী তৈরি করি @android:style/Widget.TextViewএবং নিম্নলিখিত লাইনগুলি যুক্ত করি:<item name="android:gravity">fill</item> <item name="android:padding">1sp</item>
গ্রীম

শুধু আরবীয় পাঠ্য দিয়েই কেন এই সমস্যা হয় ?!
মেন্না-আল্লাহ সামি

12
এটি কেবল একটি কর্মক্ষেত্র। সঠিক সমাধানটি হ'ল android:baselineAligned="false"আপনারLinearLayout
টমরোজব

1
যদিও এটি কাজ করে বলে মনে হচ্ছে, সঠিক সমাধানটি উপরের টমরোজব এর মন্তব্য বা জসিদের উত্তর থেকে একটি
এডুয়ার্ড বি।

28

আমারও একই সমস্যা ছিল এবং আমি এটিকে কেবল যুক্ত করে দেখতে পেলাম

android:includeFontPadding="false"

পাঠ্যের চূড়ান্ত পংক্তিতে এর বংশধরদের আর ক্লিপ ছিল না।


1
কাস্টম ফন্টগুলির সাথে, এটি সঠিক সমাধান হতে পারে। এই একমাত্র সমাধান যা আমার জন্য কাজ করেছিল ড্রয়েড সানস জাপানি ব্যবহার করার সময়।
কম্পিউটিংফ্রেক

11

আমি যোগ করে পাঠ্যের পরে কিছু ডামি স্পেস যুক্ত করেছি

textView.setText(firstString+"\n");

আমি অন্যান্য সমস্ত সমাধান চেষ্টা করেছিলাম B তবে এটিই ছিল আমার জন্য একমাত্র সমাধান


এটিকে আপনি "চেপি" বলছেন
জুলকুরনাইন জুট

6

সমস্যাযুক্ত পাঠ্যদর্শনটি একটি ফ্রেমআলেটের মধ্যে রাখুন। আমার মনে হয় স্পিনার সহোদর দর্শনের কারণে পাঠ্য ভিউটি সঠিকভাবে গণনা করা হয়নি।

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <FrameLayout
        android:layout_width="150dp"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/textView1"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:text="TextView"/>
    </FrameLayout>
    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

1
আমার কাছে তা থাকত CheckBoxএকই LinearLayout। এটি সমস্যার সমাধান করেছে।
চিন্তন শাহ

@ChintanShah মত একটি চেকবক্স পরিস্থিতির সঙ্গে একটি যাদুমন্ত্র মত কাজ
ignacardel

5

যখন এটি ঘটে তখন আপনার অবশ্যই এটি নিশ্চিত করা উচিত TextView এটি তার ধারকের চেয়ে বড় হয় না -

যদি TextViewকোনওটি সেট করা থাকে wrap_contentএবং এটির ধারক (বা কোনও পূর্বপুরুষের ধারক) এর TextViewমধ্যে বাড়ার জায়গা ছেড়ে না দেয় তবে এটি অবসর নেওয়া যায়।

যদি এটি না হয় তবে onMeasure()এটি TextViewকখনও কখনও সম্ভব হ'ল অক্ষরের লেজ, ল্যাটিন-অক্ষর অক্ষর বা পাঠ্য থেকে ইটালিকের প্রভাবগুলি সঠিকভাবে পরিমাপ করে না possible আপনি TextViewএটির জন্য একটি বিশ্বব্যাপী স্টাইল সেট করে এটি সংশোধন করতে পারেন সুতরাং এটি আপনার পুরো কোড বেস পরিবর্তন করার প্রয়োজন ছাড়াই তোলা হবে:

নিশ্চিত হয়ে নিন যে আপনি অ্যাপ্লিকেশন / ক্রিয়াকলাপগুলি এর মতো একটি কাস্টম থিম ব্যবহার করছেন:

<style name="Custom" parent="@android:style/Theme.Light">   
    <item name="android:textViewStyle">@style/Custom.Widget.TextView</item>
</style>

<style name="Custom.Widget.TextView" parent="@android:style/Widget.TextView"> 
    <item name="android:gravity">fill</item>
    <item name="android:padding">1sp</item>
</style>

@ রাইনাদ্টের উত্তর উপরের পর্যায়ে পৌঁছতে সত্যিই সহায়ক ছিল। ভিউয়ের অভ্যন্তরে পাঠ্যের মাধ্যাকর্ষণ নির্ধারণ করা এমন কিছু ডিভাইসগুলিতে নিশ্চিত হয় যা কখনই ঘটবে না (পাঠ্যটি ভিউয়ের অভ্যন্তরে সঠিকভাবে লাগানো হয়েছে), অন্যদের উপর এসপি মূল্যের প্যাডিং সহ একটি সাহায্যকারী হাত নিশ্চিত করে যে লেজগুলি এট আল হিসাবে গণ্য হয়েছে একটি TextSize নির্দিষ্ট মান সহ।


5

আমার সমাধানটি গ্রহণযোগ্যটির কাছাকাছি ছিল, তবে আমাকে এটিতে পরিবর্তন করতে হয়েছিল

   android:layout_gravity="fill_vertical"

পরিবর্তে. অন্যথায় অন্য সারিগুলি এলোমেলো জায়গায় সংযুক্ত লাইন ব্রেকগুলির সাথে প্রসারিত হত। উদাহরণস্বরূপ, বৃহত্তম সারিতে 4 টি লাইন ছিল, তাই অন্য সারিটি এ থেকে পরিবর্তন করা হয়েছিল

this is a testphrase

প্রতি

thi
s is
a testph
rase

1
আমার জন্য কাজ কর. ধন্যবাদ! +1
আহমেদ

5

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

 public class AdaptingTextView extends TextView {

    public AdaptingTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public AdaptingTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public AdaptingTextView(Context context) {
        super(context);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);

        // set fitting lines to prevent cut text
        int fittingLines = h / this.getLineHeight();
        if (fittingLines > 0) {
            this.setLines(fittingLines);
        }
    }

}

দুর্দান্ত কাজ করে তবে সতর্কতা অবলম্বন করুন যদি আপনার পাঠ্য ভিউতে লেআউট_মার্জিন নির্দিষ্ট করা থাকে কারণ এটি ফিটিং লাইনের সংখ্যাটি যত কম হওয়া উচিত তার চেয়ে কম আকার পরিবর্তন করতে পারে! আমি মার্জিনের পরিবর্তে প্যাডিং ব্যবহার করতে শুরু করেছি এবং সমস্যাটি স্থির হয়ে গেছে
মোবাইলমান 18

1
এটি একেবারে নিখুঁত কাজ করে। এখন পর্যন্ত আমি খুঁজে পেয়েছি সেরা সমাধান।
মুনব্লুম

1
এই সঠিক উত্তর, ধন্যবাদ! এটিকে কিছুটা সুন্দর করতে এবং পাঠ্যের শেষে '...' যুক্ত করার জন্য this.setEllipsize(TextUtils.TruncateAt.END);উপরের আইটি স্টেটমেন্টটিতে যোগ করুন এবং android:ellipsize="end"এক্সএমএল থেকে সরিয়ে ফেলুন যা কোনও কারণে এটি ভঙ্গ করে।
নীলস

4

অ্যান্ড্রয়েড অপসারণের চেষ্টা করুন: প্যাডিংবটম = "20 ডিপি"

থেকে

 <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="20dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="10dp" >

1
প্যাডিংয়ের সাথে এই সম্পর্কিত লেআউটে অতিরিক্ত আইটেম রয়েছে বলে সেখানে প্যাডিংটি আসলে সম্পর্কিত নয় related এই পোস্টটি আরও সহজে পড়ার জন্য আমি সেগুলি সরিয়েছি। প্রশ্নে সম্পাদনা দেখুন।
রাইনার্ড্ট

4

getViewTreeObserver().addOnGlobalLayoutListenerএকটি পুনর্ব্যবহারযোগ্য দৃশ্যে কাজ করে না। আপনি যদি একজন পুনর্ব্যবহারকারী ব্যবহার করেন তবে ব্যবহার করুন View.addOnLayoutChangeListener:

আমি দেখতে পেলাম যে এক্সিএমএলে আমি বর্ণিত এলিপসাইজিং textViewসর্বদা প্রতিফলিত হয় না তাই আমি পাঠ্য সম্পত্তি পুনরায় স্বাক্ষর করার আগে প্রোগ্রামিয়ালি সেট করেছিলাম। এটি আমার পক্ষে কাজ করেছে।

textView.addOnLayoutChangeListener(new OnLayoutChangeListener() {
    @Override
        public void onLayoutChange(View v, int left, int top, int right, int bottom,
                                   int oldLeft, int oldTop, int oldRight, int oldBottom) {
            textView.removeOnLayoutChangeListener(this);
            float lineHeight = textView.getLineHeight();
            int maxLines = (int) (textView.getHeight() / lineHeight);
            if (textView.getLineCount() != maxLines) {
                textView.setLines(maxLines);
                textView.setEllipsize(TextUtils.TruncateAt.END);
                // Re-assign text to ensure ellipsize is performed correctly.
                textView.setText(model.getText());
            }
        }
    });

3

আপনার যদি সমস্যা হয় এবং আপনার TextViewমধ্যে একটি থাকে তবে RelativeLayoutএটির RelativeLayoutজন্য স্যুইচ করার চেষ্টা করুন LinearLayout

এটা আমার জন্য সমস্যা স্থির করে


এটিই আমার জন্য একমাত্র সমাধান (অদ্ভুত আচরণ) কাজ করে! Thx
mrroboaat

1
আপেক্ষিক লেআউট থেকে লিনিয়ারলআউট থেকে কীভাবে আপনি সহজেই "স্যুইচ" করতে পারেন? যদি আপনাকে তুলনামূলকভাবে লেআউট করতে হয় তবে লিনিয়ারলআউটটি প্রয়োগ করা প্রায় অসম্ভব।
অবিশ্বাস্য জানুয়ারী

3

আপনি যে কোনও ধরণের ভিউগ্রুপে টেক্সটভিউয়ের জন্য বিশ্বব্যাপী বিন্যাস শ্রোতাদের ব্যবহার করতে পারেন।

    final TextView dSTextView = (TextView)findViewById(R.id.annoyingTextView);
dSTextView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

    @Override
    public void onGlobalLayout() {
        dSTextView.getViewTreeObserver().removeOnGlobalLayoutListener(this);

        float lineHeight = dSTextView.getLineHeight();
        int maxLines = (int) (dSTextView.getHeight() / lineHeight);

        if (dSTextView.getLineCount() != maxLines) {
            dSTextView.setLines(maxLines);
        }

    }
});

আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন


1

আমি মনে করি লেআউটগুলি পরিবর্তন করে আপনি এই কাজটি করার জন্য খুব সামান্য কিছু করতে পারেন। যেমন আমি খুঁজে পেয়েছি যে কিছু পদ্ধতি কেবল কিছু ক্ষেত্রে কাজ করে। আমি মনে করি এটি সম্পূর্ণ লেআউট স্তরক্রমের উপর নির্ভর করে এবং এক-আকারের-ফিট-সমস্ত সমাধান নয়। আমি এটাও লক্ষ্য করেছি যে এটি বিশেষত যখন আপনি অন্যরকম ফন্ট রাখেন যা আপনি টেক্সটভিউতে সেট করতে চান।

আমি পরীক্ষিত এবং পরীক্ষিত করেছি এমন একটি শট পদ্ধতি হ'ল ভিউতে স্ফীত হওয়ার পরে আপনি কোডটিতে ফন্টের বৈশিষ্ট্যগুলি সেট করতে পারেন। আমি ধরে নিচ্ছি যে আপনি যে সম্পদ / ফন্ট ফোল্ডারটি চান তা আপনার কাছে একটি ফন্ট রয়েছে।

যেমন একটি খণ্ডে:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
    View view = inflater.inflate(R.layout.fragment_view, container, false);
    TextView tv = (TextView)view.findViewById(R.id.text_view);
    tv.setText("Insert text that needs to be displayed");
    AssetManager assetManager = getContext().getAssets();
    Typeface typeFace = Typeface.createFromAsset(assetManager, "Fonts/OpenSans-Light.ttf");
    tv.setTypeface(typeFace , 0); // 0 is normal font
    tv.setPadding(10,  0, 10, 0); // This is not mandatory
}

এবং একটি ক্রিয়াকলাপে:

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(Resource.Layout.main_activity);
    TextView tv = (TextView)this.findViewById(R.id.text_view);
    tv.setText("Insert text that needs to be displayed");
    AssetManager assetManager = getContext().getAssets();
    Typeface typeFace = Typeface.createFromAsset(assetManager, "Fonts/OpenSans-Light.ttf");
    tv.setTypeface(typeFace , 0); // 0 is normal font
    tv.setPadding(10,  0, 10, 0); // This is not mandatory
}

1

আমার একই সমস্যা আছে এবং এটি খুব বিরক্তিকর।

এটি কেবল আরবী পাঠ্য সহ ঘটে।

আপনি যদি লেবেলটিকে বহু-লাইন তৈরি করেন এবং একটি \n স্ট্রিংয়ের শেষে করেন, এটি এটি ঠিক করে দেবে, তবে সমস্যাটি হ'ল এই ক্ষেত্রের কারণে এই লেবেলটি এবং এর নীচের অংশের মধ্যে একটি বড় ব্যবধান থাকবে due এর নীচে এখন একটি নতুন ফাঁকা লাইন রয়েছে।

কাছাকাছি পেতে একটি কাস্টম নিয়ন্ত্রণ করা যেতে পারে। তবে সামগ্রিকভাবে, এটি একটি বিরক্তিকর বাগ।


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

0

এর জন্য সর্বোত্তম কাজটি হ'ল আপনার দেখার নীচের অংশে পছন্দসই উচ্চতার একটি ডামি ভিউ যুক্ত করা (যেমন এটি প্যাডিং নিজেই যুক্ত করবে)।

<TableRow
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp" >
     <View 
       android:layout_width="match_parent" 
       android:layout_height="30dp"/>
</TableRow>

আমার ক্ষেত্রে মত আমি দৃশ্যের নীচে আরও একটি সারণী সারি যুক্ত করেছি। আশা করি এটি কারও সাহায্য করতে পারে।


0

আমি জানি এতো দেরি হয়ে গেছে, তবে এটি আমার জন্য মনোমুগ্ধকর কাজ। আপনার এই কোড যুক্ত করুনtextview

android:ellipsize="marquee"
android:layout_weight="1"

0

পাঠ্য দৃশ্যের নীচে প্যাডিং যুক্ত করুন:

android:paddingBottom="24dp"

-1

আমি শেষ পর্যন্ত এটি স্থির!

আমি স্ট্রিংটিকে টেক্সটভিউ ইন সার্ভিসে যুক্ত করার চেষ্টা করব এবং তারপরে কল করুন স্ক্রোলটো (), শেষ লাইনটি কেটে ফেলা হবে!

স্ক্রোলটি () কে "চলমান" এ কল করা উচিত, যেমন:

private ScrollView mScrollView;
public void scrollToBottom()
{
    mScrollView = (ScrollView) findViewById(R.id.debug_textview_scrollview);
    mScrollView.post(new Runnable()
    {
        public void run()
        {
            mScrollView.fullScroll(View.FOCUS_DOWN);
        }
    });
}

আমি এটি মনে করি কারণ পরিষেবাতে কল স্ক্রোলটো () এর মন্টে, টেক্সটভিউয়ের আপডেট প্রস্তুত নয়।

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