android - অ্যান্ড্রয়েড কি? Layout_weight মানে?




android-layout android-widget (9)

অন্য উত্তরের সাথে যোগ করা, কাজ করতে এটি সবচেয়ে গুরুত্বপূর্ণ বিষয় হল লেআউট প্রস্থ (বা উচ্চতা) 0px সেট করা

android:layout_width="0px"

অন্যথায় আপনি আবর্জনা দেখতে হবে

আমি এই বৈশিষ্ট্য ব্যবহার কিভাবে বুঝতে পারছি না। কেউ কি আমাকে এটা সম্পর্কে আরও বলতে পারেন?


আমার জন্য সেরা ব্যাখ্যাগুলির মধ্যে একটি এটি ছিল (Android টিউটোরিয়াল থেকে, ধাপ 7 এর জন্য দেখুন) :

লেআউট_ওয়েটটি লেআউটরয়েউটে ব্যবহার করা হয় যাতে লেআউটের মধ্যে দৃশ্যগুলিতে "গুরুত্ব" বরাদ্দ করতে হয়। সমস্ত দৃশ্যগুলিতে শূন্যের একটি ডিফল্ট লেআউট_ওয়েট রয়েছে, যার অর্থ তারা স্ক্রিনে যত বেশি কক্ষ প্রদর্শন করবে তাদের প্রদর্শিত হবে। শূন্যের থেকে বেশি একটি মান ধার্য করা, প্রতিটি দৃশ্যের layout_weight এর মান অনুসারে এবং প্যারেন্ট ভিউয়ের অবশিষ্ট স্থানটি ভাগ করে নেবে এবং বর্তমান এবং অন্যান্য ভিউ উপাদানগুলির জন্য বর্তমান বিন্যাসে উল্লিখিত সামগ্রিক লেআউট_ওয়েটির অনুপাত।

একটি উদাহরণ দিতে: আসুন আমরা বলি যে আমাদের একটি অনুভূমিক সারিতে একটি পাঠ্য লেবেল এবং দুটি পাঠ্য সম্পাদনা উপাদান রয়েছে। লেবেলটির কোনও লেআউট_ওয়ে নির্দিষ্ট নেই, তাই এটি রেন্ডার করতে প্রয়োজনীয় সর্বনিম্ন স্থান গ্রহণ করে। যদি দুটি পাঠ্য সম্পাদনা উপাদানগুলির প্রতিটিটির layout_weight 1 সেট করা হয়, তবে প্যারেন্ট লেআউটের অবশিষ্ট প্রস্থটি তাদের মধ্যে সমানভাবে বিভক্ত হবে (কারণ আমরা দাবি করি যে তারা সমানভাবে গুরুত্বপূর্ণ)। যদি প্রথমটির একটি লেআউট_ওয়েট থাকে এবং দ্বিতীয়টির লেআউট_ওয়েট 2 থাকে, তবে অবশিষ্ট স্থানটির এক তৃতীয়াংশ প্রথম এবং দ্বিতীয় থেকে দুই তৃতীয়াংশে দেওয়া হবে (কারণ আমরা দাবি করি যে দ্বিতীয়টি বেশি গুরুত্বপূর্ণ)।


নাম প্রস্তাব করে, লেআউট ওজন একটি নির্দিষ্ট ক্ষেত্র বা উইজেট পর্দা স্থান দখল করা উচিত কি পরিমাণ বা শতাংশ শতাংশ উল্লেখ করে।
যদি আমরা অনুভূমিক অভিযোজনে ওজন উল্লেখ করি তবে আমাদের layout_width = 0px নির্দিষ্ট করতে হবে।
একইভাবে, যদি আমরা উল্লম্ব অভিযোজনে ওজন উল্লেখ করি তবে আমাদের layout_height = 0px নির্দিষ্ট করতে হবে।


যদি layout_weight বিস্তৃত একাধিক দর্শন থাকে তবে layout_weight তাদের প্রতিটি আনুপাতিক আকার দেয়। একটি বৃহত্তর layout_weight মান "ভিউ" এর সাথে একটি দৃশ্য, তাই এটি একটি বড় স্থান পায়।

এখানে জিনিসগুলি আরো স্পষ্ট করার জন্য একটি চিত্র।

তত্ত্ব

লেআউট ওজন শব্দটি গণিতের ওজনযুক্ত ধারণার সাথে সম্পর্কিত। এটি একটি কলেজের ক্লাসের মতো যেখানে হোমওয়ার্ক 30% এর সমান, উপস্থিতি 10% এর মূল্য, মিডটারম 20% মূল্য এবং চূড়ান্ত মূল্য 40%। ঐ অংশগুলির জন্য আপনার স্কোর, যখন একসঙ্গে ওজন হয়, আপনার মোট গ্রেড দেয়।

এটা লেআউট ওজন জন্য একই। একটি অনুভূমিক LinearLayout Views মোট প্রস্থের একটি নির্দিষ্ট শতাংশ নিতে পারে। (অথবা একটি উল্লম্ব LinearLayout জন্য উচ্চতার শতাংশ।)

বিন্যাস

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <!-- list of subviews -->

</LinearLayout>

উল্লেখ্য, layout_width="match_parent" জন্য আপনাকে layout_width="match_parent" ব্যবহার করতে হবে। আপনি wrap_content ব্যবহার করলে, এটি কাজ করবে না। এছাড়াও লক্ষ করুন যে layout_weight আপেক্ষিক layout_weight মতামতগুলির জন্য কাজ করে না (এই সমস্যাটির সাথে সম্পর্কিত SO উত্তরগুলির জন্য here এবং here দেখুন)।

মতামত

একটি অনুভূমিক LinearLayout প্রতিটি দৃশ্য এমন কিছু দেখায়:

<Button
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1" />

layout_width="0dp" layout_weight="1" সহ একসাথে ব্যবহার করার প্রয়োজন মনে রাখবেন। এই নতুন ব্যবহারকারীদের সমস্যা কারণ ভুলে যাওয়া। (প্রস্থটি 0 সেট না করে আপনি বিভিন্ন ফলাফলের জন্য এই নিবন্ধটি দেখুন।) যদি আপনার মতামতগুলি উল্লম্ব layout_height="0dp" তবে অবশ্যই আপনি layout_height="0dp" ব্যবহার layout_height="0dp"

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

এক চূড়ান্ত নোট। আপনার যদি নেস্টেড লেআউটগুলি থাকে যা layout_weight ব্যবহার করে layout_weight এটি কার্য সম্পাদনের জন্য খারাপ হতে পারে।

অতিরিক্ত

উপরের চিত্রের জন্য এখানে XML লেআউট রয়েছে:

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="android:layout_weight="
        android:textSize="24sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="1" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:text="2" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="1" />

    </LinearLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="android:layout_weight="
        android:textSize="24sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="10"
            android:text="10" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="20"
            android:text="20" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="10"
            android:text="10" />

    </LinearLayout>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="android:layout_weight="
        android:textSize="24sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".25"
            android:text=".25" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".50"
            android:text=".50" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight=".25"
            android:text=".25" />

    </LinearLayout>

</LinearLayout>

লিনিয়ার এলয়েটের ওয়েটসাম এবং প্রতিটি ভিউয়ের layout_weight দেখুন। android: weightSum = "4" android: layout_weight = "2" android: layout_weight = "2" তাদের layout_height 0px উভয়ই, তবে আমি নিশ্চিত নই

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

<fragment android:name="com.example.SettingFragment"
    android:id="@+id/settingFragment"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="2"
    />

<Button
    android:id="@+id/dummy_button"
    android:layout_width="match_parent"
    android:layout_height="0px"
    android:layout_weight="2"
    android:text="DUMMY"
    />
</LinearLayout>

সংক্ষেপে, layout_weight লেআউটের অতিরিক্ত স্থানটি প্রদর্শনের জন্য কতটা বরাদ্দ করা হবে।

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

শিশু মধ্যে কোনো অবশিষ্ট স্থান বরাদ্দ গণনা

সাধারণভাবে, সূত্রটি হল:

স্থান নির্ধারিত স্থান = (বাচ্চার পৃথক ওজন) / (লিনিয়ার লেআউটে প্রতি সন্তানের ওজন সমষ্টি)

উদাহরণ 1

যদি তিনটি টেক্সট বক্স থাকে এবং তাদের মধ্যে দুইটি ওজনের একটি ভাগ করে তবে তৃতীয়টি কোনও ওজন (0) দেয় না, তখন অবশিষ্ট স্থানটি নিম্নরূপ নির্ধারণ করা হয়:

1 ম পাঠ্য বাক্স = 1 / (1 + 1 + 0)

দ্বিতীয় পাঠ্য বাক্স = 1 / (1 + 1 + 0)

তৃতীয় পাঠ্য বাক্স = 0 / (1 + 1 + 0)

উদাহরণ 2

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

হিসাব:

প্রথম লেবেল = 0 / (0 + 1 + 1)

দ্বিতীয় পাঠ্য বাক্স = 1 / (0 + 1 + 1)

তৃতীয় পাঠ্য বাক্স = 1 / (0 + 1 + 1)

যদি, পরিবর্তে, প্রথম পাঠ্য বাক্সটিতে 1 টি layout_weight এবং দ্বিতীয় পাঠ্য বাক্সটিতে 2 টি layout_weight তবে অবশিষ্ট স্থানটির এক তৃতীয়াংশ প্রথম এবং দ্বিতীয় ত্রৈমাসিকে দ্বিতীয়টি দেওয়া হবে (কারণ আমরা দাবি করি দ্বিতীয় একটি আরো গুরুত্বপূর্ণ)।

হিসাব:

প্রথম লেবেল = 0 / (0 + 1 + 2)

দ্বিতীয় পাঠ্য বাক্স = 1 / (0 + 1 + 2)

তৃতীয় পাঠ্য বাক্স = 2 / (0 + 1 + 2)

উত্স নিবন্ধ


android:autoSizeTextType="uniform" যোগ করা হচ্ছে android:autoSizeTextType="uniform" স্বয়ংক্রিয়ভাবে আপনার জন্য android:autoSizeTextType="uniform" আকার পরিবর্তন করবে


layout_weight আপনি একাধিক দর্শনগুলির মধ্যে একটি আকার অনুপাত উল্লেখ করতে পারেন। যেমন আপনার কাছে MapView এবং একটি table যা মানচিত্রে কিছু অতিরিক্ত তথ্য প্রদর্শন করবে। ম্যাপটি পর্দার 3/4 টি ব্যবহার করা উচিত এবং টেবিলের 1/4 টি স্ক্রীন ব্যবহার করা উচিত। তারপর আপনি map layout_weight 3 এবং table layout_weight সেট করতে 1 সেট করুন।

এটি কাজ করার জন্য আপনাকে 0px এ উচ্চতা বা প্রস্থ (আপনার অভিমুখের উপর নির্ভর করে) সেট করতে হবে।


অতিরিক্ত জন্য :

vertical অভিযোজন জন্য, 0dp সেট height ভুলবেন না

android:layout_height="0dp"

horizontal অভিযোজন জন্য, সেট width 0dp ভুলবেন না

android:layout_width="0dp"




android-widget