অ্যান্ড্রয়েডে অ্যাডজাস্টারাইজ এবং অ্যাডজাস্টপ্যানের মধ্যে পার্থক্য?


136

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

এখানে আমার এক্সএমএল:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/editText5"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="45dp"
                android:ems="10"
                android:inputType="textPersonName" />

            <Button
                android:id="@+id/button1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="40dp"
                android:text="My Button" />
        </LinearLayout>
    </RelativeLayout>

</ScrollView>

এবং ম্যানিফেস্ট ফাইল:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.adjustscroll"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.adjustscroll.MainActivity"
            android:label="@string/app_name"
            android:windowSoftInputMode="adjustPan|adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

উত্তর:


237

থেকে Android বিকাশকারী সাইট লিংক

"AdjustResize"

স্ক্রিনে নরম কীবোর্ডের জন্য জায়গা তৈরি করার জন্য ক্রিয়াকলাপের মূল উইন্ডোটি সর্বদা পরিবর্তন করা হয়।

"AdjustPan"

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

আপনার মন্তব্য অনুসারে, আপনার ক্রিয়াকলাপ ম্যানিফেস্টে নিম্নলিখিত ব্যবহার করুন

<activity android:windowSoftInputMode="adjustResize"> </activity>

1
আপনার উত্তরের জন্য ধন্যবাদ। আমার ইউআই নিয়ে এখন আমার সমস্যা হচ্ছে। আমার লেআউটের নীচে একটি এডিটেক্সট এবং একটি বোতাম আছে। সফট-কীবোর্ড প্রদর্শিত হলে আমি সফট-কীবোর্ডের ওপরেরগুলিকে দেখাতে চাই। আমি কীভাবে এটি অর্জন করতে পারি। আপনি এই সমস্যা সমাধানে আমাকে সাহায্য করতে পারেন?
androidcodehunter

1
এটি আমার জন্য কাজ করছে না। আসলে আমি যা চেয়েছিলাম: আমি যখন এডিটেক্সট ক্ষেত্রে কিছু লেখার চেষ্টা করি তখন আমি নরম-কীবোর্ডের উপরে সম্পাদনা পাঠ এবং বাটনটি প্রদর্শন করতে চাই। আমি আপনার সমাধান চেষ্টা করেছিলাম কিন্তু কাজ করছে না।
androidcodehunter

ওফ .. এটি আমার পক্ষে কাজ করেছে .. যাইহোক .. স্ক্রোলভিউ ব্যবহার করা কি সম্ভব?
স্টাইনপাইক

2
অ্যাডজেসাইজ কেবল তখনই সমাধান সরবরাহ করে যখন ইউআই পুনরায় আকার দেওয়ার জন্য উপলব্ধ থাকে তবে আমি যদি আরও 5 টি সম্পাদনা পাঠিয়ে রাখি তবে এটি কাজ করতে পারে না। যখন ইউআই পুনরায় আকারের জন্য উপলব্ধ না থাকে তখন কি সফট-কীবোর্ডের উপরে বোতাম এবং সম্পাদনা পাঠানো সম্ভব? আসলে আমি যখন এই সমস্যাটি পরীক্ষা করি তখন প্রশ্ন উত্থাপিত হয়।
androidcodehunter

1
@support_ms কেন replace "অ্যাডজাস্টের প্রতিস্থাপনের জন্য পুনরায় আকার পরিবর্তন করতে হবে" প্রয়োজনীয়?
ইগোরগানাপলস্কি

30

সমন্বয় করুন = পৃষ্ঠার সামগ্রীকে পুনরায় আকার দিন

অ্যাডজাস্টপ্যান = পৃষ্ঠার সামগ্রীকে আকার পরিবর্তন না করে পৃষ্ঠার সামগ্রী সরান


অসাধারণ ব্যাখ্যা!
ভ্লাদ

16

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

আরও ভাল করে বোঝার জন্য আমি একটি উদাহরণ তৈরি
করেছি:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
    tools:context=".MainActivity">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="Type Here"
        app:layout_constraintTop_toBottomOf="@id/button1"/>


    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Button1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@id/button2"
        app:layout_constraintStart_toStartOf="parent"
        android:layout_marginBottom="@dimen/margin70dp"/>

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Button2"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toEndOf="@id/button1"
        app:layout_constraintEnd_toStartOf="@id/button3"
        android:layout_marginBottom="@dimen/margin70dp"/>

    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="Button3"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@id/button2"
        android:layout_marginBottom="@dimen/margin70dp"/>
</android.support.constraint.ConstraintLayout>

এখানে নীচের xML অ্যাডজাস্টারাইজ উদাহরণের নকশা দেখুন : নীচে সামঞ্জস্য করুন উদাহরণ: নীচে সামঞ্জস্য করুন কিছুই নয়:
আসল ভিউ


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


অ্যাডজাস্টপ্যান উদাহরণ


কিছুই উদাহরণ


9

যেমন ডক বলেছেন যে সঠিক মান সংমিশ্রণটিও মনে রাখবেন:

সেটিংটি অবশ্যই নিম্নলিখিত টেবিলের তালিকাভুক্ত মানগুলির মধ্যে একটি হতে হবে বা একটি "রাষ্ট্র ..." মান সমেত একটি "সামঞ্জস্য ..." মানের সমন্বয়। দুটি গ্রুপে একাধিক মান নির্ধারণ করা - একাধিক "রাষ্ট্র ..." মান, উদাহরণস্বরূপ - ফলাফল অপরিবর্তিত। স্বতন্ত্র মানগুলি উল্লম্ব বার (|) দ্বারা পৃথক করা হয়। উদাহরণ স্বরূপ:

<activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >

কাজ করছে না, আমার স্ক্রিনটি নরম
ইনপুটটির

6

আপনি android:windowSoftInputMode="stateAlwaysHidden|adjustResize"আপনার বর্তমান ক্রিয়াকলাপের জন্য অ্যান্ড্রয়েড android:fitsSystemWindows="true"ম্যানিফেস্ট.এক্সএমএল ব্যবহার করতে পারেন এবং স্টাইল বা রুটলাউট ব্যবহার করতে পারেন ।

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