অ্যান্ড্রয়েডে উল্লম্ব এবং অনুভূমিক স্ক্রোলভিউ


152

আমি উল্লম্ব এবং অনুভূমিক স্ক্রোলভিউয়ের সমাধান অনুসন্ধান করতে সত্যিই ক্লান্ত।

আমি পড়েছি যে ফ্রেমওয়ার্কটিতে এই বৈশিষ্ট্যটি প্রয়োগ করে এমন কোনও মতামত / বিন্যাস নেই, তবে আমার এর মতো কিছু দরকার:

আমাকে অন্যের মধ্যে একটি বিন্যাস সংজ্ঞায়িত করতে হবে, চাইল্ড লেআউটটিকে সরানোর জন্য উল্লম্ব / অনুভূমিককে স্ক্রোলিং প্রয়োগ করতে হবে।

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

ক্যানভাস আমার সমাধান নয় কারণ আমার শ্রোতাদের কোনও শিশু উপাদানগুলিতে সংযুক্ত করা দরকার।

আমি কি করতে পারি?



14
এটি একেবারে হাস্যকর বিষয় যে এটি অ্যান্ড্রয়েডের সাথে বক্সের বাইরে পাওয়া যায় না। আমরা অর্ধ ডজন অন্যান্য ইউআই প্রযুক্তির সাথে কাজ করেছি এবং অনুভূমিক / উল্লম্ব স্ক্রোলিং ধারক হিসাবে এইরকম প্রাথমিক জিনিসটি না পাওয়া শুনা যায় না।
নমনীয় ডটকম

ঠিক আছে, সুতরাং শেষ পর্যন্ত আমরা আমাদের নিজের ডেটাগ্রিডের জন্য নিজস্ব লিখেছি: androidjetpack.com/Home/AndroidDataGrid । কেবল অনুভূমিক / উল্লম্ব স্ক্রোলের চেয়েও অনেক কিছু করে। তবে ধারণাটি মূলত একটি উল্লম্ব স্ক্রোলারের ভিতরে এইচএসক্রোলার মোড়ানো। অভ্যন্তরীণ স্ক্রোলার এবং কয়েকটি অন্যান্য শেনানিগানকে লক্ষ্য করতে আপনাকে বাচ্চাদের পদ্ধতিগুলি যুক্ত / অপসারণ করতে হবে, তবে এটি কার্যকর হয়।
নমনীয়.কম

উত্তর:


91

উপরের কয়েকটি পরামর্শ মেশানো, এবং একটি ভাল সমাধান পেতে সক্ষম হয়েছিল:

কাস্টম স্ক্রোলভিউ:

package com.scrollable.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class VScroll extends ScrollView {

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

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

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

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return false;
    }
}

কাস্টম অনুভূমিক স্ক্রোলভিউ:

package com.scrollable.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.HorizontalScrollView;

public class HScroll extends HorizontalScrollView {

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

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

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

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        return false;
    }
}

স্ক্রোলেবল ইমেজএকটিভিটি:

package com.scrollable.view;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.HorizontalScrollView;
import android.widget.ScrollView;

public class ScrollableImageActivity extends Activity {

    private float mx, my;
    private float curX, curY;

    private ScrollView vScroll;
    private HorizontalScrollView hScroll;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        vScroll = (ScrollView) findViewById(R.id.vScroll);
        hScroll = (HorizontalScrollView) findViewById(R.id.hScroll);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        float curX, curY;

        switch (event.getAction()) {

            case MotionEvent.ACTION_DOWN:
                mx = event.getX();
                my = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                curX = event.getX();
                curY = event.getY();
                vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                mx = curX;
                my = curY;
                break;
            case MotionEvent.ACTION_UP:
                curX = event.getX();
                curY = event.getY();
                vScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                hScroll.scrollBy((int) (mx - curX), (int) (my - curY));
                break;
        }

        return true;
    }

}

বিন্যাস:

<?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">
    <com.scrollable.view.VScroll android:layout_height="fill_parent"
        android:layout_width="fill_parent" android:id="@+id/vScroll">
        <com.scrollable.view.HScroll android:id="@+id/hScroll"
            android:layout_width="fill_parent" android:layout_height="fill_parent">
            <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/bg"></ImageView>
        </com.scrollable.view.HScroll>
    </com.scrollable.view.VScroll>

</LinearLayout>

এটি একটি দুর্দান্ত উত্তর, আমার অন্যান্য দৃষ্টিভঙ্গিতে অন্যান্য স্ক্রোলিং উপাদানও ছিল যা পরিবর্তিত হওয়া দরকার। আমাকে যা করতে হয়েছিল তা হ'ল অন্যদের সাথে তাদের স্ক্রোলবাই ট্রিগার করা।
টি। মার্কেল

1
গ্রেট! গতিবেগ বিবেচনায় নেওয়ার জন্য কয়েকটি সামঞ্জস্যতা এবং এটি নিখুঁত হবে (এছাড়াও, LinearLayoutআমার প্রাথমিক
ধারণাটি

আরে মাহদী আপনি কি আমাকে জানাতে পারবেন, কোন নিয়ন্ত্রণ / উইজেটের উপরে আপনি ক্রিয়াকলাপ শ্রেণিতে টাচ শ্রোতার পুনঃস্থাপন করেছেন।
শ্যাচিলিজ 24'13

বিলম্বের জন্য দুঃখিত @ প্রদীপশর্ম। আমি ক্রিয়াকলাপে কোনও স্পর্শ শ্রোতার নিবন্ধভুক্ত করিনি, আমি কেবলমাত্র কার্যকলাপের অনন্যপ্রচারকে ওভাররাইড করেছি।
মাহদী হিজাজি

@MahdiHijazi তোমার দর্শন লগ করা অনুভূমিক স্ক্রোলিং এবং উল্লম্ব স্ক্রোলিং আপনার কোড যোগ দয়া করে করতে পারেন github.com/MikeOrtiz/TouchImageView এই সফলভাবে বাটনে ক্লিক ইমেজ জুম করা হয় কিন্তু স্ক্রল ইমেজ করতে ব্যর্থ
Erum

43

যেহেতু "অ্যান্ড্রয়েড উল্লম্ব + অনুভূমিক স্ক্রোলভিউ" এর জন্য গুগলে এটি প্রথম অনুসন্ধানের ফলাফল বলে মনে হচ্ছে, তাই আমি ভেবেছিলাম আমার এটি এখানে যুক্ত করা উচিত। ম্যাট ক্লার্ক অ্যান্ড্রয়েড উত্সের ভিত্তিতে একটি কাস্টম ভিউ তৈরি করেছে এবং এটি পুরোপুরি কাজ করছে বলে মনে হচ্ছে: দ্বি মাত্রিক স্ক্রোলভিউ

সাবধান হোন যে পৃষ্ঠাটির শ্রেণিতে ভিউটির অনুভূমিক প্রস্থের গণনা করার একটি বাগ রয়েছে। ম্যানুয়েল হিল্টির একটি সমাধান মন্তব্যগুলিতে রয়েছে:

সমাধান: 808 লাইনে স্টেটমেন্টটি নিম্নলিখিত দ্বারা প্রতিস্থাপন করুন:

final int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(lp.leftMargin + lp.rightMargin, MeasureSpec.UNSPECIFIED);


সম্পাদনা: দ্য লিংক আর কাজ করে না কিন্তু এখানে ব্লগপোস্টটিকে এর একটি পুরোনো সংস্করণ একটি লিঙ্ক


3
ধন্যবাদ, আমি যা খুঁজছিলাম
আন্দ্রে আগিবালোভ

1
এটি আমার জন্য কিছুটা সংশোধন করার পরে কবজির মতো কাজ করে। আমি পুনরায় প্রয়োগ করেছি fillViewportএবং onMeasureঠিক স্ক্রোলভিউ উত্স (v2.1) এর মতো। আমি প্রথম দুটি নির্মাণকারীর সাথেও পরিবর্তন করেছি: this( context, null );এবং this(context, attrs, R.attr.scrollViewStyle);। এটির সাথে আমি কোড ব্যবহার করে setVerticalScrollBarEnabledএবং স্ক্রোলবারটি ব্যবহার করতে পারি setHorizontalScrollBarEnabled
অলিভিয়ের_এসডিজি

আমার জন্য দুর্দান্ত কাজ! আপনাকে অনেক ধন্যবাদ!
এভিও

তবে কীভাবে স্ক্রোল থাম্বের আকার এবং স্ক্রোল অবস্থানটি নীচের দিকের উল্লম্ব থেকে এবং ডান দিক থেকে অনুভূমিক মোডে পাবেন
রবি

10
লিঙ্কযুক্ত পোস্টটি অদৃশ্য হয়ে গেছে দেখে মনে হচ্ছে।
loeschg

28

আমি একটি ভাল সমাধান খুঁজে পেয়েছি।

এক্সএমএল: (ডিজাইন.এক্সএমএল)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">
  <FrameLayout android:layout_width="90px" android:layout_height="90px">
    <RelativeLayout android:id="@+id/container" android:layout_width="fill_parent" android:layout_height="fill_parent">        
    </RelativeLayout>
</FrameLayout>
</FrameLayout>

জাভা কোড:

public class Example extends Activity {
  private RelativeLayout container;
  private int currentX;
  private int currentY;

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.design);

    container = (RelativeLayout)findViewById(R.id.container);

    int top = 0;
    int left = 0;

    ImageView image1 = ...
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(left, top, 0, 0);               
    container.addView(image1, layoutParams);

    ImageView image2 = ...
    left+= 100;
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(left, top, 0, 0);               
    container.addView(image2, layoutParams);

    ImageView image3 = ...
    left= 0;
    top+= 100;
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(left, top, 0, 0);               
    container.addView(image3, layoutParams);

    ImageView image4 = ...
    left+= 100;     
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(left, top, 0, 0);               
    container.addView(image4, layoutParams);
  }     

  @Override 
  public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN: {
            currentX = (int) event.getRawX();
            currentY = (int) event.getRawY();
            break;
        }

        case MotionEvent.ACTION_MOVE: {
            int x2 = (int) event.getRawX();
            int y2 = (int) event.getRawY();
            container.scrollBy(currentX - x2 , currentY - y2);
            currentX = x2;
            currentY = y2;
            break;
        }   
        case MotionEvent.ACTION_UP: {
            break;
        }
    }
      return true; 
  }
}

এটা কাজ !!!

আপনি যদি অন্য লেআউট বা নিয়ন্ত্রণ লোড করতে চান তবে কাঠামোটি একই।


এই চেষ্টা করে দেখুন, এবং এটি খুব ভাল কাজ করে! এটিতে কোনও স্ক্রোল সূচক বা ঝাঁকুনি নেই, তবে এটি নিম্ন-স্তরের দৃষ্টিভঙ্গি হওয়ায় এই জিনিসগুলি এটির উপরে খুব সহজেই নির্মিত হতে পারে। ধন্যবাদ!
ubzack

নেটওয়ার্কের উপর এসএসএইচ রিমোট কমান্ডগুলির ফলাফল থেকে রিয়েলটাইম আউটপুট আউটপুট করা একটি দ্বি মাত্রিক স্ক্রোলযোগ্য ভিউ লেখার জন্যও আমার পক্ষে ভাল কাজ করেছে।
পাইলক্রোপাইপ

@ ক্রোনস: আমি যদি কেবল অনুভূমিকভাবে স্ক্রোল করতে চাই তবে কী হবে? আমার y প্যারামিটারটি ধারক.স্ক্রোলবাইতে (কারেন্টএক্স - এক্স 2, কারেন্টওয়াই - ওয়াই 2) থাকা উচিত। এমন কোনও উপায় আছে যেখানে আমরা এটিকে কেবল অনুভূমিকভাবে স্ক্রোল করতে পারি?
আশ্বিন

@ ক্রোনোস: এটি খুব দূরে স্ক্রোল করে। শেষ পৌঁছে গেলে স্ক্রোলটি থামানোর কোনও উপায় আছে কি?
আশ্বিন

বাটনগুলি স্ক্রোলযোগ্য নয়, কেন?
সালিহ কল্লাই

25

আমি এটি ব্যবহার করি এবং ভাল কাজ করে:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:id="@+id/ScrollView02" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            xmlns:android="http://schemas.android.com/apk/res/android">
<HorizontalScrollView android:id="@+id/HorizontalScrollView01" 
                      android:layout_width="wrap_content" 
                      android:layout_height="wrap_content">
<ImageView android:id="@+id/ImageView01"
           android:src="@drawable/pic" 
           android:isScrollContainer="true" 
           android:layout_height="fill_parent" 
           android:layout_width="fill_parent" 
           android:adjustViewBounds="true">
</ImageView>
</HorizontalScrollView>
</ScrollView>

উত্স লিঙ্কটি এখানে: অ্যান্ড্রয়েড-স্পা


2
এটি স্থির বিষয়বস্তুর জন্য সর্বোত্তমভাবে "ঠিক আছে" কাজ করে। একাধিক গুগল ইঞ্জিনিয়াররা বলেছেন যে আপনি যা ব্যবহার করতে চাইছেন তাতে সমস্যা হবে (গ্রুপ. google.com/group/android-developers/browse_frm/thread/… এবং গ্রুপ. google.com/group/android-beginners/browse_thread/thread/ … )।
কমন্সওয়্যার

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

3
"স্থিতিশীল বিষয়বস্তু" দ্বারা আমি এমন জিনিসগুলিকে বোঝাই যা স্পর্শ ইভেন্টগুলি নিজেরাই জড়িত না। আমার বক্তব্য - অন্যদের জন্য এই উত্তরটি পড়ার জন্য - এটি হ'ল আপনার সমাধানটি যখন ImageViewস্ক্রোলযোগ্য সামগ্রী হিসাবে একক জন্য কাজ করতে পারে তবে এটি নির্বিচারে অন্যান্য বিষয়বস্তুর জন্য কাজ করতে বা নাও করতে পারে এবং গুগল বিশ্বাস করে যে আপনার পদ্ধতির সাথে সমস্যা থাকবে। গুগলের মতামত ভবিষ্যতের বিকাশের ক্ষেত্রেও গুরুত্বপূর্ণ - তারা যদি নিশ্চিত হতে চেষ্টা করে না যে আপনার পদ্ধতির কাজটি দীর্ঘস্থায়ী হয়েছে তবে তারা যদি লোকেরা যাতে প্রথম স্থানে এটি ব্যবহার না করার পরামর্শ দেয় তবে।
CommonsWare

এটি আমার জন্য সূক্ষ্ম কাজ করা হয় ... আমি একটি থ্রেড ব্যবহার করে এই scrollview একটি imageview রিফ্রেশ করছি
টমাস সনু

19

আমার সমাধান মাহদী হিজাজির উত্তরের ভিত্তিতে , তবে কোনও কাস্টম দর্শন ছাড়াই:

লেআউট:

<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ScrollView 
        android:id="@+id/scrollVertical"
        android:layout_width="wrap_content"
        android:layout_height="match_parent" >

        <WateverViewYouWant/>

    </ScrollView>
</HorizontalScrollView>

কোড (অনক্রিট / অনক্রিটভিউ):

    final HorizontalScrollView hScroll = (HorizontalScrollView) value.findViewById(R.id.scrollHorizontal);
    final ScrollView vScroll = (ScrollView) value.findViewById(R.id.scrollVertical);
    vScroll.setOnTouchListener(new View.OnTouchListener() { //inner scroll listener         
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return false;
        }
    });
    hScroll.setOnTouchListener(new View.OnTouchListener() { //outer scroll listener         
        private float mx, my, curX, curY;
        private boolean started = false;

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            curX = event.getX();
            curY = event.getY();
            int dx = (int) (mx - curX);
            int dy = (int) (my - curY);
            switch (event.getAction()) {
                case MotionEvent.ACTION_MOVE:
                    if (started) {
                        vScroll.scrollBy(0, dy);
                        hScroll.scrollBy(dx, 0);
                    } else {
                        started = true;
                    }
                    mx = curX;
                    my = curY;
                    break;
                case MotionEvent.ACTION_UP: 
                    vScroll.scrollBy(0, dy);
                    hScroll.scrollBy(dx, 0);
                    started = false;
                    break;
            }
            return true;
        }
    });

আপনি স্ক্রোলভিউগুলির ক্রম পরিবর্তন করতে পারেন। বিন্যাসে এবং কোডগুলিতে কেবল তাদের ক্রম পরিবর্তন করুন। এবং স্পষ্টতই ওয়াটারভিউয়ের পরিবর্তে আপনি উভয় দিকটি স্ক্রোল করতে চান এমন বিন্যাস / দৃষ্টিভঙ্গি রাখতে চান।


আমি hScrol.setOnTouchListener এ মিথ্যা প্রত্যাবর্তনের দৃ returning় পরামর্শ দিচ্ছি। আমি যখন মিথ্যাতে পরিবর্তিত হয়েছিলাম, তালিকাটি উভয় দিকে আঙুলের উপরে "মসৃণভাবে অটো" স্ক্রোল করা শুরু করে।
গ্রেটা রাদিসাউসকেইট

1
অনুভূমিকভাবে প্রথমে স্ক্রোল করার সময় কাজ করে। উল্লম্ব প্রথম হলে, কেবল উল্লম্বভাবে যায়
ইরালা

6

বিকল্প # 1: আপনি একটি নতুন ইউআই ডিজাইন নিয়ে আসতে পারেন যা একসাথে অনুভূমিক এবং উল্লম্ব স্ক্রোলিংয়ের প্রয়োজন হয় না।

অপশন # 2: আপনার কাছে সোর্স কোড পেতে পারেন ScrollViewএবং HorizontalScrollView, কীভাবে কোর অ্যান্ড্রয়েড টিম ঐ বাস্তবায়িত, এবং আপনার নিজের তৈরি BiDirectionalScrollViewবাস্তবায়ন।

বিকল্প # 3: আপনি নির্ভরশীলতাগুলি থেকে মুক্তি পেতে পারেন যা আপনাকে উইজেট সিস্টেমটি ব্যবহার করতে এবং ক্যানভাসে সরাসরি আঁকতে পারে।

বিকল্প # 4: আপনি যদি কোনও ওপেন সোর্স অ্যাপ্লিকেশনকে হোঁচট খাচ্ছেন যা আপনি যা খুঁজছেন তা বাস্তবায়ন করে বলে মনে হচ্ছে, তারা কীভাবে এটি করেছে তা দেখুন look


6

এটা চেষ্টা কর

<?xml version="1.0" encoding="utf-8"?>
<ScrollView android:id="@+id/Sview" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android">
<HorizontalScrollView 
   android:id="@+id/hview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">
<ImageView .......
 [here xml code for image]
</ImageView>
</HorizontalScrollView>
</ScrollView>

6

যেহেতু দ্বি মাত্রিক স্ক্রোলভিউ লিঙ্কটি মারা গেছে আমি এটি পেতে পারি না তাই আমি নিজের উপাদান তৈরি করেছি। এটি ঝাঁকুনি পরিচালনা করে এবং আমার জন্য সঠিকভাবে কাজ করে। একমাত্র বিধিনিষেধটি হ'ল মোড়াক_ সামগ্রীটি সেই উপাদানটির জন্য সঠিকভাবে কাজ করতে পারে না।

https://gist.github.com/androidseb/9902093


2

আপনার সমস্যার সমাধান আমার আছে। আপনি স্ক্রোলভিউ কোডটি পরীক্ষা করতে পারেন এটি কেবল উল্লম্ব স্ক্রোলিং পরিচালনা করে এবং অনুভূমিক একটিকে উপেক্ষা করে এটিকে সংশোধন করতে পারে। আমি একটি ওয়েবভিউয়ের মতো মতামত চেয়েছিলাম, তাই স্ক্রোলভিউ সংশোধন করেছি এবং এটি আমার পক্ষে ভাল কাজ করেছে। তবে এটি আপনার প্রয়োজন অনুসারে নয়।

আপনি কী ধরনের UI টার্গেট করছেন তা আমাকে জানতে দিন।

শুভেচ্ছা সহ,

রবি পণ্ডিত


1

কোডটি খেললে আপনি একটি হরাইজ্টালস্ক্রোলভিউকে একটি স্ক্রোলভিউতে রাখতে পারেন। এর মাধ্যমে আপনার কাছে একই ভিউতে দুটি স্ক্রোল পদ্ধতি থাকতে পারে।

সূত্র: http://androiddevblog.blogspot.com/2009/12/creating-two-dimension-scroll-view.html

আমি আশা করি এটি আপনাকে সহায়তা করতে পারে।


1
এটি কোনও ভাল সমাধান নয়। আপনি যদি লক্ষ্য করেন, ভিউটি টেনে আনার সময় আপনি সর্বদা উল্লম্ব বা অনুভূমিকভাবে টানছেন। নেস্টেড স্ক্রোল ভিউগুলি ব্যবহার করে আপনি একটি তির্যকটি ধরে টানতে পারবেন না।
আকাশে কেলসি

তির্যক স্ক্রোলিংয়ের অভাবের চেয়ে খারাপটি হ'ল ভিউ প্রান্তে থাকা উভয় স্ক্রোলবারের অভাব হ'ল কারণ এটি নীস্টযুক্ত। আরও ভাল একটি স্ক্রোলভিউ উত্তর এবং সম্পূর্ণতা এবং সাধারণীকরণের কারণে ম্যাট ক্লার্কের কোডের সাথে কচাপার লিঙ্কটি সেরা সমাধান।
হুপার্নিকেটস

0

এইভাবে ব্যবহার করুন আমি এটি চেষ্টা করেছিলাম fixed

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

<android.support.v4.widget.NestedScrollView 

আমি এই লিঙ্কটি উল্লম্ব পুনর্ব্যবহারযোগ্য ভিউ এবং অনুভূমিক পুনর্ব্যবহারযোগ্য ভিউ একসাথে স্ক্রোলিংয়ে এটি ব্যাখ্যা করেছি

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