অ্যান্ড্রয়েডে টেক্সটভিউ স্ক্রোলযোগ্য করা


771

আমি একটি পাঠ্য দৃশ্যে পাঠ্যটি প্রদর্শন করছি যা এক স্ক্রিনে ফিট হতে খুব দীর্ঘ বলে মনে হচ্ছে। আমার টেক্সটভিউকে স্ক্রোলযোগ্য করতে হবে। আমি এটা কিভাবে করবো?

কোডটি এখানে:

final TextView tv = new TextView(this);
tv.setBackgroundResource(R.drawable.splash);
tv.setTypeface(face);
tv.setTextSize(18);
tv.setTextColor(R.color.BROWN);
tv.setGravity(Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL);
tv.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent e) {
        Random r = new Random();
        int i = r.nextInt(101);
        if (e.getAction() == e.ACTION_DOWN) {
            tv.setText(tips[i]);
            tv.setBackgroundResource(R.drawable.inner);
        }
        return true;
    }
});
setContentView(tv);

উত্তর:


1717

আপনার ScrollViewআসলে ব্যবহার করার দরকার নেই ।

শুধু সেট করুন

android:scrollbars = "vertical"

TextViewআপনার বিন্যাসের এক্সএমএল ফাইলটিতে আপনার বৈশিষ্ট্য ।

তারপরে ব্যবহার করুন:

yourTextView.setMovementMethod(new ScrollingMovementMethod());

আপনার কোডে

বিঙ্গো, স্ক্রল!


96
তবে অবশ্যই maxLinesআপনার একটি স্বেচ্ছাসেবী সংখ্যা প্রবেশ করা প্রয়োজন; এটি এমন কিছু নয় যা প্রতিটি পর্দার আকার এবং হরফ আকারের জন্য কাজ করবে? আমি এটিকে কেবল একটি দিয়ে মুড়িয়ে ফেলা সহজ বলে মনে ScrollViewকরি, এর অর্থ হিসাবে আমাকে আর কোনও এক্সএমএল বৈশিষ্ট্য বা কোড যুক্ত করতে হবে না (যেমন চলাচলের পদ্ধতিটি সেট করার মতো)।
ক্রিস্টোফার অর

12
ক্রিস্টোফার, স্ক্রোলভিউ'র জন্যও 'অ্যান্ড্রয়েড: লেআউট_হাইট' প্রয়োজন
রেজেজ রুকি

11
@ রিজেক্স: আচ্ছা হ্যাঁ হয় আপনি ScrollViewপ্রয়োজন হিসাবে প্রয়োজনীয় স্থান গ্রহণ করতে দিন (উদাহরণস্বরূপ android:fillViewportবৈশিষ্ট্যের মাধ্যমে ), অথবা আপনি যে নির্দিষ্ট আকারটি চান সেটি সেট করেছেন। maxLinesইউআই উপাদানগুলির আকার নির্ধারণের জন্য ব্যবহার করা উচিত নয়, এটি কোনও সমাধান নয়।
ক্রিস্টোফার অর

62
আপনি সর্বোচ্চরেখা সংজ্ঞায়িত করতে হবে না। শুধু বাকি
স্টেভানিকাস

13
"মসৃণ" স্ক্রোলিং সম্পর্কে প্রত্যেকে কী বলছে তা স্পষ্ট করার জন্য: আপনি যদি এই পদ্ধতিটি ব্যবহার করেন তবে স্ক্রোলিংটি আসলে "মসৃণ" (যাতে আপনি পিক্সেল দ্বারা পিক্সেল স্ক্রোল করতে পারেন) তবে এটি গতিগত নয় । আপনার আঙুলটি সরিয়ে দেওয়ার সাথে সাথে এটি তাত্ক্ষণিকভাবে স্ক্রোলিং বন্ধ করে দেয় - কোনও ফলকিং নেই। এটি একটি আধুনিক ইউআইয়ের পক্ষে বেশ গ্রহণযোগ্য নয় তাই আমি উত্তরটি সম্পাদনা করতে যাচ্ছি যাতে অন্যান্য লোকেরা এই "সমাধান" এর জন্য সময় নষ্ট না করে তা নিশ্চিত করে।
টিম্ম্ম্ম

310

এক্সএমএলে খাঁটিভাবে এটি করেছিলাম:

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

    <ScrollView
        android:id="@+id/SCROLLER_ID"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:fillViewport="true">

        <TextView
            android:id="@+id/TEXT_STATUS_ID"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"/>
    </ScrollView>
</LinearLayout>

মন্তব্য:

  1. android:fillViewport="true"এর সাথে মিলিত android:layout_weight="1.0"পাঠ্যদর্শনটি সমস্ত উপলব্ধ স্থান গ্রহণ করবে।

  2. স্ক্রোলভিউ সংজ্ঞায়িত করার সময়, উল্লেখ করবেন না android:layout_height="fill_parent"অন্যথায় স্ক্রোলভিউ কাজ করে না! (এটি আমাকে এখনই এক ঘন্টা নষ্ট করতে বাধ্য করেছে! এফএফএস)।

প্রো টিপ:

প্রোগ্রাম যুক্তভাবে পাঠ্য সংযোজনের পরে নীচে স্ক্রোল করতে, এটি ব্যবহার করুন:

mTextStatus = (TextView) findViewById(R.id.TEXT_STATUS_ID);
mScrollView = (ScrollView) findViewById(R.id.SCROLLER_ID);

private void scrollToBottom()
{
    mScrollView.post(new Runnable()
    {
        public void run()
        {
            mScrollView.smoothScrollTo(0, mTextStatus.getBottom());
        }
    });
}

12
ব্যবহার করার দরকার নেই mTextView.getBottom(), কেবল পদ্ধতিটি ব্যবহার করুন mScrollView.fullScroll(View.FOCUS_DOWN)কারণ এটি স্ক্রোলভিউ এপিআইয়ের একটি অংশ। দেখুন এখানে এবং এখানে আরও তথ্যের জন্য।
চুংফাম

7
অ্যান্ড্রয়েড সতর্ক করে দিয়েছে যে এই উদাহরণটিতে দু'টিই LinearLayoutবা ScrollViewঅকেজো হতে পারে (আমি LinearLayoutসম্পূর্ণভাবে সরিয়ে দিয়েছি )। এটি হুঁশিয়ারিও দেয় যে এর জন্য TextViewএটির android:layout_height="wrap_content"সাথে ম্যাচ করা উচিত ScrollView। এই সতর্কতাগুলি এই উত্তর পোস্ট হওয়ার পরে যে 3 বছর কেটে গেছে তার কারণে হতে পারে। নির্বিশেষে, এই উত্তরটি মসৃণ স্ক্রোলিং এবং
ঝাঁকুনিকে

এক্সএমএল ফাইলের <!--suppress AndroidLintUselessParent -->উপরে উপরে যুক্ত করা ScrollViewসেই সতর্কতাগুলির যত্ন নেবে।
লুই বার্টনসিন

"প্রো টিপ "টি আমার পক্ষে অ্যান্ড্রয়েড এপিআই স্তরে 9 এর জন্য কাজ করে না view পাঠ্যদর্শনটি পাঠ্য সংযোজনের পরে শীর্ষে স্ক্রোলড থাকে।
LarsH

স্বীকৃত উত্তর পদ্ধতির ব্যবহারটি এই পদ্ধতির চেয়ে অনেক ভাল, কোনও মসৃণ ব্যবহারকারীর অভিজ্ঞতা তৈরি করে না।
সৈয়দরেজাফর

120

যা সত্যিই প্রয়োজনীয় তা হ'ল সেটমোভমেন্টমেথড ()। লিনিয়ারলআউট ব্যবহার করে এখানে একটি উদাহরণ দেওয়া আছে।

ফাইল main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:id="@+id/tv1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/hello"
    />
</LinearLayout>

ফাইল ওয়ার্ডএক্সট্রাকটেষ্ট.জভা

public class WordExtractTest extends Activity {

    TextView tv1;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tv1 = (TextView)findViewById(R.id.tv1);

        loadDoc();
    }

    private void loadDoc() {

        String s = "";

        for(int x=0; x<=100; x++) {
            s += "Line: " + String.valueOf(x) + "\n";
        }

        tv1.setMovementMethod(new ScrollingMovementMethod());

        tv1.setText(s);
    }
}

3
এক্সএমএলে এই সম্পত্তি সেট করার কোনও উপায় আছে কি? আমি অবাক হয়েছি কেন তারা এই বিকল্পটি ছাড়বে।
থালুর

এটি কাজ করে তবে স্ক্রোলিংয়ের পরে তা রিফ্রেশ করার কোনও উপায় কী? আমি বোঝাতে চাইছি টেক্সটভিউ স্ক্রোল করার পরে আমি এতে লেখাটি পরিবর্তন করতে যাচ্ছি, তবে এটির প্রয়োজনীয়তা না থাকলেও এর অবস্থানটি স্ক্রোলড থেকে যায়। এর বোকোস আগে আমি স্ক্রোল প্রয়োগ করেছিলাম ...
নীরভ ডঙ্গি

9
কোনও স্ক্রোল বার নেই, এবং স্ক্রোলিং ScrollViewপদ্ধতির তুলনায় চতুর ।
জেফ্রি ব্লাটম্যান

1
একটি এর StringBuilderপরিবর্তে একটি ব্যবহার করুন String... আপনার কাছে যা কিছুটা অপচয় হ'ল।
অ্যালেক্স লকউড

4
এটি কাজ করে তবে স্ক্রোলিংটি মসৃণ নয়। ধন্যবাদ যদিও কাজ করে।
হিমশীতল

46

আপনার পাঠ্যদর্শনটি কেবল এটি যুক্ত করুন

TextView textview= (TextView) findViewById(R.id.your_textview_id);
textview.setMovementMethod(new ScrollingMovementMethod());

16
এটি গতিময় স্ক্রোলিং করে না। এটি ব্যবহার করবেন না।
টিম্ম্ম্ম

3
@ টিম্মম্মে কীভাবে গতিশীল স্ক্রোল পাবেন?
সিরো সান্তিলি 法轮功 病毒 审查 六四 事件

আপনি যে পাঠ্য পড়তে হবে তার জন্য "গতিবিহীন স্ক্রোলিং" চান না।
অবিশ্বাস্য জানুয়ারী

41

এটি রাখা প্রয়োজন হয় না

android:Maxlines="AN_INTEGER"`

আপনি কেবল যোগ করে আপনার কাজটি করতে পারেন:

android:scrollbars = "vertical"

এবং এই কোডটি আপনার জাভা ক্লাসে রাখুন:

textview.setMovementMethod(new ScrollingMovementMethod());

গৃহীত একের চেয়ে অনেক বেশি ভাল সমাধান, যেহেতু স্ক্রোলবারের আকারটি ঠিক পাঠ্যের সাথে খাপ খায় এবং আপনি স্থান নষ্ট করেন না।
ফ্র্যাক্টালবোজ

যখন আমি স্ক্রোলভিউকে পিতামাতা হিসাবে ব্যবহার করছি তখন সেই সময়টি কাজ করছে না
প্রিন্স

27

অপরপক্ষে তুমি

  1. আশেপাশে TextViewa ScrollView; অথবা
  2. আন্দোলন পদ্ধতিতে সেট করুন ScrollingMovementMethod.getInstance();

22

আমি সবচেয়ে ভাল উপায় খুঁজে পেয়েছি:

এই অতিরিক্ত বৈশিষ্ট্যগুলির সাথে একটি সম্পাদনা পাঠ্য সহ টেক্সটভিউ প্রতিস্থাপন করুন:

android:background="@null"
android:editable="false"
android:cursorVisible="false"

কোনও স্ক্রোলভিউতে মোড়ানোর দরকার নেই।


2
সহজেই সর্বোত্তম এবং সবচেয়ে উপযুক্ত উত্তর, বিশেষত এডিটেক্সটটি একটি পাঠ্যদর্শন সাবক্লাস হিসাবে বিবেচনা করে এবং প্রশ্নটি কীভাবে সমস্যাটি ঘটাতে হবে তা নয়, কীভাবে পাঠ্যদর্শনটি স্ক্রোলযোগ্য করতে হয়। আমি পারলে দুবার ভোট
দিতাম

4
পুনঃটুইট করুন :) এটি পুরোপুরি নির্মমভাবে কাজ করে যে এটি কাজ করে এবং অ্যান্ড্রয়েডের ভবিষ্যতের সংস্করণগুলিতে এটির কোনও গ্যারান্টি নেই। আপনি যদি স্ক্রলিং করতে চান তবে অ্যান্ড্রয়েড সরবরাহ করে এমন স্ক্রোলিং সরঞ্জামগুলি ব্যবহার করুন। ScrollViewযাওয়ার সঠিক উপায়।
ম্যাডব্রেকস

1
@ ম্যাডব্রেকস এ সম্পর্কে "নির্মোহী" কিছুই নেই, সম্পাদনা পাঠ্য কয়েকটি পাঠ্য পদ্ধতি এবং ওভাররাইড সহ একটি পাঠ্যদর্শন যা বিশেষত বিভিন্ন দৈর্ঘ্যের পাঠ্যকে সামঞ্জস্য করতে উপযুক্ত। বিশেষত এডিটেক্সট টেক্সটভিউ getDefaultMovementMethod ফাংশনের রিটার্ন মানকে ওভাররাইড করে। ডিফল্ট বাস্তবায়ন নুল দেয়, এডিটেক্সট মূলত একই কাজ করে যা এই সমস্ত অন্যান্য উত্তর প্রস্তাব দিচ্ছে। অ্যান্ড্রয়েড যে সরঞ্জামগুলি সরবরাহ করে সেগুলি ব্যবহার করার ক্ষেত্রে, এডিট টেক্সট শ্রেণীর এই উত্তরগুলিতে পাওয়া অন্য যে কোনও পদ্ধতির চেয়ে অবহেলিত হওয়ার সম্ভাবনা খুব কম।
জাস্টিন বুজার

4
যে যদিও সঙ্গে @JustinBuser আমার সমস্যা আপনি editText ডিফল্ট আচরণ, তার উপর নির্ভর করে করছি যে আমি কি খুব ভাল রাস্তা নিচে পরিবর্তন হতে পারে (সব যে editText উঠিয়ে নেওয়া হবে) বোঝানো। আপনি এটি তর্ক করতে পারেন, তবে আবার, ধারণাটি হ'ল কার্যটির জন্য উপযুক্ত এমন উপাদান এবং বৈশিষ্ট্যগুলি ব্যবহার করা। স্ক্রোলভিউ স্পষ্টভাবে স্ক্রোলিং অন্তর্ভুক্ত করার জন্য ডিজাইন করা হয়েছিল। আমি সর্বদা চেষ্টা করি এবং সর্বদা অন্যকে কাজের জন্য সঠিক সরঞ্জামটি ব্যবহার করার পরামর্শ দিই। যে কোনও প্রোগ্রামিং সমস্যায় প্রায় সবসময় একাধিক পন্থা থাকে। যাইহোক, চিন্তাশীল প্রতিক্রিয়া জন্য ধন্যবাদ।
ম্যাডব্রেকস

16

সহজ। এটি আমি এটি করেছিলাম:

  1. এক্সএমএল সাইড:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        tools:context="com.mbh.usbcom.MainActivity">
        <TextView
            android:id="@+id/tv_log"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"
            android:text="Log:" />
    </RelativeLayout>
  2. জাভা দিক:

    tv_log = (TextView) findViewById(R.id.tv_log);
    tv_log.setMovementMethod(new ScrollingMovementMethod());

বোনাস:

পাঠ্য দর্শনের পাঠ্যটি ভরাট হওয়ার সাথে সাথে নীচে স্ক্রোল করতে আপনার এটিকে যুক্ত করতে হবে:

    android:gravity="bottom"

টেক্সটভিউ এক্সএমএল ফাইলটিতে। আরও পাঠ্য আসার সাথে সাথে এটি স্বয়ংক্রিয়ভাবে স্ক্রোল হয়ে যাবে।

অবশ্যই আপনাকে সেট পাঠ্যের পরিবর্তে অ্যাপেনড ফাংশনটি ব্যবহার করে পাঠ্য যুক্ত করতে হবে:

    tv_log.append("\n" + text);

আমি লগ উদ্দেশ্যে এটি ব্যবহার।

আশা করি এটা কাজে লাগবে ;)


14

এটি কেবলমাত্র আপনার এক্সএমএল ব্যবহার করে "কীভাবে আপনার টেক্সটভিউতে স্ক্রোলবার প্রয়োগ করবেন"।

প্রথমে আপনাকে মেইন.এমএমএল ফাইলটিতে একটি টেক্সটভিউ নিয়ন্ত্রণ নিতে হবে এবং এর মধ্যে কিছু পাঠ্য লিখতে হবে ... এটির মতো:

<TextView
    android:id="@+id/TEXT"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="@string/long_text"/>

এরপরে, এই পাঠ্যের জন্য স্ক্রোল বারটি প্রদর্শন করতে স্ক্রোলভিউয়ের মধ্যে পাঠ্য প্রদর্শনের নিয়ন্ত্রণটি রাখুন:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">

    <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_height="150px"
        android:layout_width="fill_parent">

        <TextView
            android:id="@+id/TEXT"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/long_text"/>

    </ScrollView>
</RelativeLayout>

এটাই...


6
কেন এই লিখেন? এটি প্রায় অভিন্ন, যদিও কম সঠিক, একটি উত্তরের সংস্করণ যা আপনি এটি লেখার 6 মাস আগে পোস্ট করেছিলেন।
জাস্টিন বুজার

11

এটি একটি স্ক্রোল বার সহ মসৃণ স্ক্রোলিং পাঠ্য সরবরাহ করবে।

ScrollView scroller = new ScrollView(this);
TextView tv = new TextView(this);
tv.setText(R.string.my_text);
scroller.addView(tv);

নীল অ্যানিমেশন সক্ষম করে। এখানে সেরা উত্তর আইএমও।
গ্রিফিন ডব্লিউ।

11

কোথাও কোথাও কারও কাছ থেকে উপরে "প্রো টিপ" ( অ্যান্ড্রয়েডে টেক্সটভিউকে স্ক্রোলযোগ্য করে তোলা ) দুর্দান্ত কাজ করে তবে, আপনি যদি গতিশীলভাবে স্ক্রোলভিউতে পাঠ্য যুক্ত করেন এবং ব্যবহারকারী কেবল তখনই সংযোজনের পরে নীচে স্বয়ংক্রিয়ভাবে স্ক্রোল করতে চান তবে কি হবে? স্ক্রোলভিউয়ের নীচে? (সম্ভবত যদি ব্যবহারকারী কোনও কিছু পড়তে স্ক্রোল করে থাকে তবে আপনি অ্যাপেন্ডের সময় নীচে স্বয়ংক্রিয়ভাবে পুনরায় সেট করতে চান না, যা বিরক্তিকর হবে))

যাইহোক, এটি এখানে:

if ((mTextStatus.getMeasuredHeight() - mScrollView.getScrollY()) <=
        (mScrollView.getHeight() + mTextStatus.getLineHeight())) {
    scrollToBottom();
}

MTextStatus.getLineHeight () এটিকে তৈরি করবে যাতে আপনি যদি স্ক্রোলভিউয়ের শেষে থেকে কোনও লাইনের মধ্যে থাকেন তবে আপনি স্ক্রোলটবটম () ব্যবহার করবেন না।


10

আপনি যদি পাঠ্যদর্শনটির মধ্যে পাঠ্যটি স্ক্রোল করতে চান তবে আপনি নিম্নলিখিতগুলি অনুসরণ করতে পারেন:

প্রথমে আপনার সাবক্লাস পাঠ্যদর্শন থাকতে হবে।

এবং তারপরে এটি ব্যবহার করুন।

নিম্নলিখিতটি একটি সাবক্ল্যাসড টেক্সটভিউয়ের উদাহরণ।

public class AutoScrollableTextView extends TextView {

    public AutoScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setEllipsize(TruncateAt.MARQUEE);
        setMarqueeRepeatLimit(-1);
        setSingleLine();
        setHorizontallyScrolling(true);
    }

    public AutoScrollableTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setEllipsize(TruncateAt.MARQUEE);
        setMarqueeRepeatLimit(-1);
        setSingleLine();
        setHorizontallyScrolling(true);
    }

    public AutoScrollableTextView(Context context) {
        super(context);
        setEllipsize(TruncateAt.MARQUEE);
        setMarqueeRepeatLimit(-1);
        setSingleLine();
        setHorizontallyScrolling(true);
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        if(focused)
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
    }

    @Override
    public void onWindowFocusChanged(boolean focused) {
        if(focused)
            super.onWindowFocusChanged(focused);
    }

    @Override
    public boolean isFocused() {
        return true;
    }
}

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

 <com.yourpackagename.AutoScrollableTextView
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="This is very very long text to be scrolled"
 />

এটাই.


7

এক্সএমএলে পাঠ্যদৃষ্টিতে নিম্নলিখিতটি যুক্ত করুন।

android:scrollbars="vertical"

এবং পরিশেষে, যোগ করুন

textView.setMovementMethod(new ScrollingMovementMethod());

জাভা ফাইলের মধ্যে।


1
এটি গতিময় স্ক্রোলিং করে না। এটা ব্যবহার করোনা.
টিম্ম্ম্ম

6

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


6
soo ... আপনি কীভাবে জ্বলন্ত অঙ্গভঙ্গি যুক্ত করলেন?
লু মর্দা

6

পাঠ্যদর্শনটি স্ক্রোলযোগ্য করার জন্য কোটলিনে

myTextView.movementMethod= ScrollingMovementMethod()

এবং এই সম্পত্তিটি এক্সএমএল যুক্ত করুন

    android:scrollbars = "vertical"

5

আপনি যখন স্ক্রোলযোগ্য দিয়ে সম্পন্ন করবেন, আপনি যখন ভিউটিতে কিছু প্রবেশ করবেন তখন এই লাইনটি ভিউয়ের শেষ লাইনে যুক্ত করুন:

((ScrollView) findViewById(R.id.TableScroller)).fullScroll(View.FOCUS_DOWN);

বাবু, টেবিলস্ক্রোলার এমন একটি ভিউ যা এক্সএমএল থেকে আইডি বৈশিষ্ট্য দ্বারা চিহ্নিত হয়েছিল যা প্রক্রিয়া করা হয়েছিল .. আপনি কেবল এটি চেষ্টা করুন .. এটি ঠিক কাজ করবে .. এটি আমার কাজ থেকে ..
রাহুল বড়দিয়া

4

আপনি যদি এডিটেক্সট সমাধানটি ব্যবহার করতে না চান তবে আপনার সাথে আরও ভাগ্য ভাল হতে পারে:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yourLayout);
    (TextView)findViewById(R.id.yourTextViewId).setMovementMethod(ArrowKeyMovementMethod.getInstance());
}

4

এটি আপনার এক্সএমএল লেআউটে যুক্ত করুন:

android:ellipsize="marquee"
android:focusable="false"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="To Make An textView Scrollable Inside The TextView Using Marquee"

এবং কোডে আপনাকে নিম্নলিখিত লাইনগুলি লিখতে হবে:

textview.setSelected(true);
textView.setMovementMethod(new ScrollingMovementMethod());

2
এটি গতিময় স্ক্রোলিং করে না। এটা ব্যবহার করোনা.
টিম্ম্ম্ম

আমি শেষ পাঠটি উপবৃত্তাকার করতে চাই না। আমি এটা কিভাবে করব.
সাগর নায়ক

@ সাগরনায়েক অ্যান্ড্রয়েড ব্যবহার করুন: উপবৃত্তাকার = "কিছুই নয়"
ফ্রান্সিস

2

নীচের কোডটি একটি স্বয়ংক্রিয় অনুভূমিক স্ক্রোলিং পাঠ্যদর্শন তৈরি করে:

এক্সএমএল ব্যবহারে টেক্সটভিউ যুক্ত করার সময়

<TextView android:maxLines="1" 
          android:ellipsize="marquee"
          android:scrollHorizontally="true"/>

টেক্সটভিউয়ের নিম্নলিখিত বৈশিষ্ট্যগুলি অনক্রিট () এ সেট করুন

tv.setSelected(true);
tv.setHorizontallyScrolling(true); 



0

আমার ক্ষেত্রে। কনস্ট্রিট লেআউট.এএস 2.3।

কোড বাস্তবায়ন:

YOUR_TEXTVIEW.setMovementMethod(new ScrollingMovementMethod());

এক্সএমএল:

android:scrollbars="vertical"
android:scrollIndicators="right|end"

0

আমি এক সপ্তাহ ধরে এটির সাথে লড়াই করেছি এবং অবশেষে এই কাজটি কীভাবে করা যায় তা ভেবে দেখলাম!

আমার সমস্যাটি হ'ল সবকিছুই 'ব্লক' হিসাবে স্ক্রোল করে। পাঠ্যটি নিজেই স্ক্রোলিং ছিল, তবে এক লাইনের পরিবর্তে খণ্ড হিসাবে। এটি সম্ভবত আমার পক্ষে কাজ করে নি, কারণ এটি নীচে লাইনগুলি কেটে দেবে। পূর্ববর্তী সমস্ত সমাধান আমার পক্ষে কাজ করে না, তাই আমি নিজের তৈরি করেছি।

এখানে পর্যন্ত সবচেয়ে সহজ সমাধান:

একটি প্যাকেজের ভিতরে: 'পারফেক্টস্ক্রোলবেটেক্সটভিউ' নামে একটি শ্রেণি ফাইল তৈরি করুন, তারপরে এই কোডটি অনুলিপি করুন এবং এতে আটকান:

import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;

public class PerfectScrollableTextView extends TextView {

    public PerfectScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    public PerfectScrollableTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    public PerfectScrollableTextView(Context context) {
        super(context);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        if(focused)
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
    }

    @Override
    public void onWindowFocusChanged(boolean focused) {
        if(focused)
            super.onWindowFocusChanged(focused);
    }

    @Override
    public boolean isFocused() {
        return true;
    }
}

শেষ পর্যন্ত এক্সএমএলে আপনার 'টেক্সটভিউ' পরিবর্তন করুন:

থেকে: <TextView

প্রতি: <com.your_app_goes_here.PerfectScrollableTextView


1
100% নিখুঁত উত্তর। আপনি বিবরণে উল্লেখ হিসাবে আমি একই সমস্যার মুখোমুখি। অনেকগুলি সমাধান প্রয়োগ করুন তবে সঠিকভাবে কাজ করবেন না not তবে আপনার সমাধান প্রতিটি ক্ষেত্রে নিখুঁতভাবে কাজ করছে। আমার সময় বাঁচাও মানুষ :) ধন্যবাদ
দেক্সেশ ভেকেরিয়া

@ দাক্ষেশভেকারিয়া খুশী এটি আপনার পক্ষে কাজ করেছে!
পেট্রো

0

রাখুন maxLinesএবং scrollbarsTextView ভিতরে XML- এর।

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:maxLines="5" // any number of max line here.
    />

তারপরে জাভা কোডে।

textView.setMovementMethod(new ScrollingMovementMethod());


0

আমি যখন TextViewভিতরে ব্যবহার করছিলাম তখন আমার এই সমস্যা হয়েছিল ScrollView। এই সমাধানটি আমার পক্ষে কাজ করেছে।

scrollView.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                description.getParent().requestDisallowInterceptTouchEvent(false);

                return false;
            }
        });

        description.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                description.getParent().requestDisallowInterceptTouchEvent(true);

                return false;
            }
        });

0

যখনই আপনাকে পিতামাতার হিসাবে স্ক্রোলভিউ ব্যবহার করতে হবে এবং আপনি টেক্সটভিউয়ের সাথে স্ক্রোল চলাচল পদ্ধতিও ব্যবহার করেন।

এবং যখন আপনি নিজের ডিভাইসটি ল্যান্ডস্কেপ করার জন্য প্রতিকৃতি করেন সেই সময় কিছু সমস্যা হয় । (লাইক) পুরো পৃষ্ঠাটি স্ক্রোলযোগ্য তবে স্ক্রোল চলাচল পদ্ধতিটি কাজ করতে পারে না।

আপনি যদি এখনও পিতামাতা হিসাবে স্ক্রোলভিউ ব্যবহার করতে চান বা স্ক্রোল চলাচল পদ্ধতি হিসাবে থাকেন তবে আপনি নীচে ডেস্ক ব্যবহার করুন।

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

নিচে দেখ :

<EditText
     android:id="@+id/description_text_question"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@null"
     android:editable="false"
     android:cursorVisible="false"
     android:maxLines="6"/>

এখানে, সম্পাদনা পাঠ্য পাঠের মত আচরণ করে

এবং আপনার সমস্যা সমাধান করা হবে


0

এক্সএমএল - আপনি android:scrollHorizontallyঅ্যাট্রিবিউট ব্যবহার করতে পারেন

পাঠ্যটি দেখার চেয়ে বৃহত্তর হিসাবে অনুমোদিত কিনা (এবং তাই অনুভূমিকভাবে স্ক্রোল করা যায়)।

"সত্য" বা "মিথ্যা" এর মতো বুলিয়ান মান হতে পারে।

প্রিগ্র্যাক্যাসি - setHorizontallyScrolling(boolean)


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