জামারিন.ফর্মের লেআউটঅপশন, বিশেষত পূরণ এবং প্রসারণের মধ্যে পার্থক্য কী?


170

জ্যামারিন.ফোর্মে প্রত্যেকটির Viewদুটি বৈশিষ্ট্য রয়েছে HorizontalOptionsএবং VerticalOptions। উভয় প্রকারের LayoutOptionsএবং নিম্নলিখিত মানগুলির একটি হতে পারে:

  • LayoutOptions.Start
  • LayoutOptions.Center
  • LayoutOptions.End
  • LayoutOptions.Fill
  • LayoutOptions.StartAndExpand
  • LayoutOptions.CenterAndExpand
  • LayoutOptions.EndAndExpand
  • LayoutOptions.FillAndExpand

স্পষ্টতই এটি প্যারেন্ট ভিউতে ভিউয়ের প্রান্তিককরণ নিয়ন্ত্রণ করে। কিন্তু প্রতিটি পৃথক বিকল্পের আচরণটি ঠিক কীভাবে হয়? এবং Fillপ্রত্যয়টির মধ্যে পার্থক্য কী Expand?

উত্তর:


335

সংক্ষিপ্ত উত্তর

Start, Center, Endএবং Fillদৃশ্য এর সংজ্ঞায়িত তার স্থান মধ্যে প্রান্তিককরণ

Expandউপলব্ধ হলে এটি আরও স্থান দখল করে কিনা তা নির্ধারণ করে

তত্ত্ব

গঠন LayoutOptions দুটি স্বতন্ত্র আচরণ নিয়ন্ত্রণ করে:

  1. সারিবদ্ধতা: পিতামাতার দৃশ্যের মধ্যে দর্শনটি কীভাবে সংযুক্ত করা হয়?

    • Start: উল্লম্ব সারিবদ্ধকরণের জন্য ভিউ শীর্ষে সরানো হয়। অনুভূমিক প্রান্তিককরণের জন্য এটি সাধারণত বাম হাতের অংশ। (তবে দ্রষ্টব্য, ডান থেকে বাম ভাষা সেটিং সহ ডিভাইসগুলিতে এটি অন্যদিকে যেমন ডানদিকে আবদ্ধ is
    • Center: দৃশ্যটি কেন্দ্রিক।
    • End: সাধারণত দৃশ্যটি নীচে বা ডানদিকে প্রান্তিক হয়। (ডান থেকে বাম ভাষাগুলিতে, অবশ্যই বামদিকে সারিবদ্ধ হয়েছে))
    • Fill: এই সারিবদ্ধতা কিছুটা আলাদা। প্যারেন্ট ভিউয়ের পুরো আকার জুড়ে দৃশ্যটি প্রসারিত হবে।

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

  2. সম্প্রসারণ: যদি উপাদান পাওয়া যায় তবে আরও বেশি জায়গা দখল করবে?

    • প্রত্যয় Expand: যদি পিতামাতার দৃষ্টিভঙ্গিটি তার সমস্ত শিশুদের সম্মিলিত আকারের চেয়ে বড় হয়, অর্থাৎ অতিরিক্ত স্থান উপলব্ধ হয়, তবে স্থানটি প্রত্যয়টির সাথে শিশু দর্শনগুলির মধ্যে সমানুপাতিক। এই শিশুরা তাদের স্থান "দখল" করবে, তবে অগত্যা এটি "পূরণ" করবে না। নীচের উদাহরণে আমাদের এই আচরণের উপর নজর দেওয়া হবে।
    • প্রত্যয় নেই: প্রত্যয়বিহীন শিশুরা Expandঅতিরিক্ত স্থান পাওয়া গেলেও অতিরিক্ত স্থান পাবে না।

    আবার, পিতামাতার দৃষ্টিভঙ্গি যদি তার বাচ্চাদের চেয়ে বড় না হয় তবে প্রসারিত প্রত্যয়টিও কোনও পার্থক্য করে না।

উদাহরণ

আটটি লেআউট বিকল্পের মধ্যে পার্থক্য দেখতে নীচের উদাহরণটি একবার দেখুন।

অ্যাপটিতে StackLayoutআটটি নেস্টেড সাদা বোতামগুলির সাথে একটি গা gray ় ধূসর রয়েছে , যার প্রতিটিটি তার উল্লম্ব বিন্যাস বিকল্প সহ লেবেলযুক্ত। যে কোনও একটি বোতামে ক্লিক করার সময়, এটি স্ট্যাক বিন্যাসে এর উল্লম্ব বিন্যাস বিকল্পটি নির্ধারণ করে। এইভাবে আমরা সহজেই পিতামাতার সাথে পৃথক পৃথক বিন্যাস বিকল্পের সাথে মতামতের কথোপকথনটি পরীক্ষা করতে পারি।

(কোডের শেষ কয়েকটি লাইনের অতিরিক্ত হলুদ বাক্স যুক্ত হয়েছে a আমরা কিছুক্ষণের মধ্যে এটিতে ফিরে আসব))

public static class App
{
    static readonly StackLayout stackLayout = new StackLayout {
        BackgroundColor = Color.Gray,
        VerticalOptions = LayoutOptions.Start,
        Spacing = 2,
        Padding = 2,
    };

    public static Page GetMainPage()
    {
        AddButton("Start", LayoutOptions.Start);
        AddButton("Center", LayoutOptions.Center);
        AddButton("End", LayoutOptions.End);
        AddButton("Fill", LayoutOptions.Fill);
        AddButton("StartAndExpand", LayoutOptions.StartAndExpand);
        AddButton("CenterAndExpand", LayoutOptions.CenterAndExpand);
        AddButton("EndAndExpand", LayoutOptions.EndAndExpand);
        AddButton("FillAndExpand", LayoutOptions.FillAndExpand);

        return new NavigationPage(new ContentPage {
            Content = stackLayout,
        });
    }

    static void AddButton(string text, LayoutOptions verticalOptions)
    {
        stackLayout.Children.Add(new Button {
            Text = text,
            BackgroundColor = Color.White,
            VerticalOptions = verticalOptions,
            HeightRequest = 20,
            Command = new Command(() => {
                stackLayout.VerticalOptions = verticalOptions;
                (stackLayout.ParentView as Page).Title = "StackLayout: " + text;
            }),
        });
        stackLayout.Children.Add(new BoxView {
            HeightRequest = 1,
            Color = Color.Yellow,
        });
    }
}

নিম্নলিখিত স্ক্রিনশটগুলি আটটি বোতামের প্রত্যেকটিতে ক্লিক করার পরে ফলাফলটি দেখায়। আমরা নিম্নলিখিত পর্যবেক্ষণগুলি করি:

  • যতক্ষণ পিতামাতারা stackLayoutশক্ত থাকে ( Fillপৃষ্ঠাটি নয়) ততক্ষণ প্রতিটিটির উল্লম্ব বিন্যাস বিকল্পটি Buttonনগণ্য l
  • উল্লম্ব লেআউট বিকল্পটি কেবল তখনই গুরুত্বপূর্ণ যদি stackLayoutবড় (যেমন Fillসারিবদ্ধ মাধ্যমে ) এবং পৃথক বোতামগুলির Expandপ্রত্যয় থাকে have
  • অতিরিক্ত স্থানটি ঘটনাক্রমে Expandপ্রত্যয়যুক্ত সমস্ত বোতামের মধ্যে সমানুপাতিক । এটি আরও পরিষ্কারভাবে দেখতে আমরা প্রতি দুটি প্রতিবেশী বোতামের মধ্যে হলুদ অনুভূমিক রেখা যুক্ত করেছি।
  • তাদের অনুরোধ করা উচ্চতার চেয়ে বেশি জায়গাগুলিযুক্ত বোতামগুলি প্রয়োজনীয়ভাবে এটি "পূরণ" করে না। এই ক্ষেত্রে আসল আচরণটি তাদের প্রান্তিককরণ দ্বারা নিয়ন্ত্রিত হয়। উদাহরণস্বরূপ তারা হয় তাদের উপরের, কেন্দ্রের বা তাদের জায়গার বোতামে সারিবদ্ধ থাকে বা এটি পুরোপুরি পূরণ করে।
  • সমস্ত বোতাম লেআউটের পুরো প্রস্থ জুড়ে বিস্তৃত, যেহেতু আমরা কেবলমাত্র পরিবর্তন করি VerticalOptions

স্ক্রীনশট

এখানে আপনি সংশ্লিষ্ট উচ্চ-রেজোলিউশনের স্ক্রিনশটগুলি পাবেন।


6
চিত্রটি [[মিডফিং]] এর মতো দেখাচ্ছে ol এটি কৌতুক করা সত্যিই সহায়ক ছিল
জয় রেক্স

1
@ জয়আরেক্স: ঠিক আছে, সম্ভবত এই সংস্করণটি কিছুটা বিভ্রান্তিকর। ;)
ফালকো

2
আমি উপরের আউটপুট নিয়ে বিভ্রান্ত হয়েছি। স্টার্ট এবং স্টার্টঅ্যান্ড এক্সপ্যান্ড উভয়ই একই আউটপুট .. এইগুলির মধ্যে পার্থক্য কী? সম্ভব হলে আপনি কি ব্যাখ্যা দিতে পারেন ..
রণজিৎ কুমার

1
FillAndExpandআপনি যা চান তা কি 99%
স্টিফেন ডেলক্রোকিক্স

1
@ রাজজিৎকুমার তারা একই রকম এটি স্ট্যাকএলআউট অন্য পিতামাতার মধ্যে নেস্ট করা হয়েছিল তখন এর ফিলঅ্যান্ডএক্সপ্যান্ডটি কোনও পার্থক্য করতে পারে - এটি তার পিতামাতার মধ্যে প্রসারিত হবে ।
মিহা মার্কিক

16

জ্যামারিন.ফর্মের বর্তমান সংস্করণে কিছুটা বাগ রয়েছে; সম্ভবত এটি একটি সময় হয়েছে।

CenterAndExpand সাধারণত প্রসারিত হয় না এবং এর চারপাশে কাজ করা বিভ্রান্তিকর হতে পারে।

উদাহরণস্বরূপ, যদি আপনার কাছে StackLayoutসেট থাকে CenterAndExpand, তবে আপনি ভিতরে CenterAndExpandএকটি লেবেল রাখবেন যা আপনাকে সেট করে আপনি সেটগুলির পুরো প্রস্থের একটি লেবেল আশা করবে StackLayout। নাঃ। এটি প্রসারিত হবে না। আপনি সেট আছে StackLayoutথেকে " FillAndExpand" নেস্টেড লেবেল বস্তুর পেতে পূর্ণ প্রস্থ প্রসারিত করতে StackLayout, তারপর পাঠ্য সহ, নিজেই না একটি অবজেক্ট হিসেবে, কেন্দ্র লেবেল বলতে HorizontalTextAlignment="Center"। আমার অভিজ্ঞতায় আপনার পিতামাতা এবং নেস্টেড উভয় সন্তানেরই সেট করা দরকার FillAndExpandযদি আপনি সত্যই এটি ফিট হয়ে যায় তা নিশ্চিত করতে চান।

        <StackLayout HorizontalOptions="FillAndExpand"
                     Orientation="Vertical"
                     WidthRequest="300">
            <Label BackgroundColor="{StaticResource TileAlerts}"
                   HorizontalOptions="FillAndExpand"
                   Style="{StaticResource LabelStyleReversedLrg}"
                   HorizontalTextAlignment="Center"
                   Text="Alerts" />

3
"... আপনি এমন একটি লেবেল আশা করবেন যা স্ট্যাকলআউটটির পুরো প্রস্থ।" এই অনুমানটি ভুল। Expandকেবল স্ট্যাকলাউট বাচ্চাদের জন্য ব্যবহৃত হয়। সুতরাং, যদি আপনার স্ট্যাকলআউটটি মূল হয়, বা অন্য স্ট্যাকলআউটে Expandনেই তবে এর কোনও প্রভাব নেই। পরিবর্তে, ফিল ব্যতীত অন্য কোনও বিকল্প সাইজিংয়ের জন্য "মোড়ানো বিষয়বস্তু" হিসাবে কাজ করবে, যা আপনি দেখতে পাচ্ছেন।
therealjohn

তদতিরিক্ত, প্রসারণ কেবল লেআউটঅ্যাপশনের জন্য কাজ করে যা স্ট্যাকলাউট এর একই ওরিয়েন্টেশনের। এই ক্ষেত্রে, লেআউটটি "উল্লম্ব" তবে প্রশ্নগুলির বিকল্পগুলি অনুভূমিক (বিপরীত)।
therealjohn

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

1

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

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="Alignments.MainPage"
             BackgroundColor="White">


    <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" BackgroundColor="LightGray" Padding="1" Margin="30">
        <Label Text="Vert: EndAndExpand, Horz: EndAndExpand" VerticalOptions="EndAndExpand" HorizontalOptions="EndAndExpand" BackgroundColor="White"/>
    </StackLayout>


</ContentPage>

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

স্টার্ট বনাম স্টার্টএন্ডএক্সপ্যান্ড শুরু করুন শুরুর জন্য ব্যবহৃত কোডটি এখানে:

<Label Text="Vert: Start, Horz: Start" VerticalOptions="Start" HorizontalOptions="Start" BackgroundColor="White"/>

এবং স্টার্টএন্ডএক্সপ্যান্ডের জন্য ব্যবহৃত কোড:

<Label Text="Vert: StartAndExpand, Horz: StartAndExpand" VerticalOptions="StartAndExpand" HorizontalOptions="StartAndExpand" BackgroundColor="White"/>

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

শেষ বনাম এন্ডএন্ডএক্সপ্যান্ড

কেন্দ্র বনাম CenterAndExpand and

বনাম ফিল অ্যান্ড এক্সপ্যান্ড পূরণ করুন

আমি আরও কিছু বিবরণের জন্য মাইক্রোসফ্ট ডকুমেন্টেশনটি একবার দেখার পরামর্শ দিই । উল্লেখযোগ্য হ'ল "সম্প্রসারণটি কেবল স্ট্যাকলআউট দ্বারা ব্যবহৃত হয়"।


সুন্দর দৃশ্য। তবে আমি দেখতে পাচ্ছি না কেন এটি জামারিনে বাগ প্রদর্শন করা উচিত। বিভ্রান্তকর বিষয়টি হ'ল লেবেলগুলি তাদের সাদা পটভূমির চেয়ে বেশি জায়গা দখল করতে পারে (আমার উদাহরণে ধূসর অঞ্চলগুলি)। সুতরাং একটি "ভার্ট সেন্টার" লেবেলটি যে স্থানটি দখল করে আছে তার মধ্যে কেন্দ্রিক - পুরো পৃষ্ঠার মধ্যে নয় within স্পষ্টতই, প্রায় ছয় বছর পরে এই বিষয়টি এখনও আগের মতো বিভ্রান্তিকর।
ফালকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.