অ্যান্ড্রয়েড টেবিললআউটে "কলস্প্যান" এর সমতুল্য কী?


132

আমি অ্যান্ড্রয়েডে একটি টেবিলআউট ব্যবহার করছি। এখনই আমার কাছে এটিতে দুটি আইটেমের সাথে একটি টেবিলরো রয়েছে এবং এর নীচে একটি টেবিলের সাথে এটিতে একটি আইটেম রয়েছে। এটি এর মতো রেন্ডার করে:

-----------------------------
|   Cell 1    |  Cell 2     |
-----------------------------
|   Cell 3    |
---------------

আমি যা করতে চাই তা হ'ল সেল 3 উভয় উপরের কোষ জুড়ে প্রসারিত করা, সুতরাং এটি দেখতে এরকম দেখাচ্ছে:

-----------------------------
|   Cell 1    |  Cell 2     |
-----------------------------
|           Cell 3          |
-----------------------------

এইচটিএমএলে আমি একটি কল ব্যবহার করব .... অ্যান্ড্রয়েডে আমি কীভাবে এই কাজটি করব?


ইমো, আমি এটি করার আরও ভাল উপায় অনুভব করি। এখানে উত্তর: স্ট্যাকওভারফ্লো.com
ভায়াচ্লাভ

1
রেকর্ডের জন্য, লক্ষ্য করুন যে একটি টেবিল লেআউট মূলত একটি লিনিয়ারলআউট। তার মানে আপনি যে কোনও শিশুকে সরাসরি যুক্ত করতে পারবেন। সুতরাং একটি একক সমস্ত কলাম-স্প্যান দর্শন জন্য, আপনি টেবিলরো এড়িয়ে যেতে পারেন।
ralfoide

উত্তর:


196

দেখে মনে হচ্ছে যে এটি করার একটি বৈশিষ্ট্য রয়েছে: বিন্যাস_স্প্যান

আপডেট: এই বৈশিষ্ট্যটি অবশ্যই টেবিলরোয়ের বাচ্চাদের জন্য প্রয়োগ করতে হবে। টেবিলরো নিজেই নয়।


8
হ্যাঁ, এই এক। অ্যালিপস লেআউট উইজেটটি এটি সম্পর্কে জানেনি বলে মনে হয়, কারণ এটি উপলব্ধ বৈশিষ্ট্যগুলির মধ্যে তালিকাবদ্ধ ছিল না। কিন্তু এটি কাজ করে।
স্পাইক উইলিয়ামস

2
আপনি জানেন, উত্তরে আপনার আপডেটের জন্য +1। আমি অনুসন্ধানের চেষ্টা করছিলাম যে কেন গ্রহনটি সিটিআরএল + স্পেসে সেই বিকল্পটি দিচ্ছে না! : ডি;)
নীরভ জাভেরি

আমি আমার দৃষ্টিতে বিন্যাস_স্প্যান ব্যবহার করি। তারপরে আমি সেই ভিউতে ওজন ব্যবহার করতে পারি না। আমাকে মোড়ানো_ কনটেন্ট ব্যবহার করতে হবে। কেন?
ইসি ড্রয়েড

93

শুধু উত্তরটি সম্পূর্ণ করতে, লেআউট_স্প্যান বৈশিষ্ট্যটি অবশ্যই টেবিলরোতে নয়, সন্তানের সাথে যুক্ত করা উচিত।

এই স্নিপেটটি আমার টেবিল লেআউটের তৃতীয় সারিটি দেখায় যা 2 টি কলামের জন্য ছড়িয়ে রয়েছে।

<TableLayout>
    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_span="2"
            android:text="@string/create" />
    </TableRow>
</TableLayout>

36

এবং এইভাবে আপনি এটি প্রোগ্রামগতভাবে করেন

//theChild in this case is the child of TableRow
TableRow.LayoutParams params = (TableRow.LayoutParams) theChild.getLayoutParams();
params.span = 2; //amount of columns you will span
theChild.setLayoutParams(params);

7
স্প্যানযুক্ত সামগ্রীটি সারিটি পূরণ করতে আপনাকে প্যারাম.ওয়েট = 1 সেট করতেও হতে পারে।
rmirabelle

1
এটি কাজ করে না। stackoverflow.com/a/18682293/1979882 এখানে আমি ব্যাখ্যাটি লিখেছি।
ভায়াচ্লাভ

7
প্রথমে শিশুটিকে সারিতে যুক্ত করার বিষয়টি নিশ্চিত করুন।
আর্টেম কালিনচুক

1
@ ড্যাকসাউন্ডার্স উত্তরটি ঘুরে ফিরে গেছে। আপনার সম্পাদনাটি আপনার প্রয়োজনের জন্য নির্দিষ্ট ছিল। মূল উত্তরটি পদ্ধতির জন্য জেনেরিক এবং 31 টি থাম্ব আপ আপনাকে বলতে পারে যে আপনি কিছু ভুল করছেন? আর্টেমের মন্তব্যও দেখুন যা হাইলাইট করে শিশুকে প্রথমে যুক্ত করা দরকার। এক্ষেত্রে childযে কোনও কিছুই হতে পারে, কেবল আপনার সম্পাদনা অনুসারে পাঠ্যদর্শন নয়। ধন্যবাদ
অনিমুশা

27

পুরো সারিটি পূরণ করার জন্য আপনাকে লেআউট_ওয়েট ব্যবহার করতে হবে অন্যথায় এটি সারণী বিন্যাসের বাম বা ডান কলামটি পূরণ করে।

<TableRow
  android:id="@+id/tableRow1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content">

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_span="2"
            android:layout_weight="1"
            android:text="ClickMe" />

    </TableRow>

3
ধন্যবাদ. এটি ক্ষুদ্র বা নমনীয় উপাদানগুলির জন্য আমার অনুপস্থিত তথ্য ছিল।
chksr

5

সম্ভবত এটি কাউকে সাহায্য করবে। আমি সমাধানটি চেষ্টা করেছিলাম layout_spanকিন্তু এটি আমার পক্ষে কাজ করছে না। তাই আমি এই কৌশলটি দিয়ে সমস্যার সমাধান করেছি। শুধু ব্যবহার LinearLayoutস্থানে TableRowযেখানে আপনি colspan দরকার, সব যে।


1
এবং এটি লিনিয়ারআলআউট হওয়ার দরকার নেই। আমি যেমন চেয়েছিলাম ঠিক তেমন একটি দৃষ্টিভঙ্গি রেখেছি।
JPMagalhaes

3

অ্যান্ড্রয়েড ব্যবহার করুন: টেবিলরো উপাদানের শিশু উপাদানটিতে লেআউট_স্প্যান


1

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

এখানে কোডের একটি অংশ রয়েছে যা .... কাজ করে না:

            TableRow the_ligne_unidade = new TableRow(this);
            the_ligne_unidade.setBackgroundColor(the_grey);

            TextView my_unidade = new TextView(this);
            my_unidade.setText(tsap_unidade_nom);
            my_unidade.setTextSize(20);
            my_unidade.setTypeface(null, Typeface.BOLD);
            my_unidade.setVisibility(View.VISIBLE);

            TableRow.LayoutParams the_param;
            the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams();
            the_param.span = 3;
            my_unidade.setLayoutParams(the_param);

            // Put the TextView in the TableRow
            the_ligne_unidade.addView(my_unidade);

কোডটি ঠিক আছে বলে মনে হচ্ছে তবে আপনি যখন "the_params" এর সূচনাটি পৌঁছান তখন এটি NULL প্রদান করে।

অন্য প্রান্তে, এই কোডটি কবজির মতো কাজ করে:

            TableRow the_ligne_unidade = new TableRow(this);
            the_ligne_unidade.setBackgroundColor(the_grey);

            TextView my_unidade = new TextView(this);
            my_unidade.setText(tsap_unidade_nom);
            my_unidade.setTextSize(20);
            my_unidade.setTypeface(null, Typeface.BOLD);
            my_unidade.setVisibility(View.VISIBLE);

            // Put the TextView in the TableRow
            the_ligne_unidade.addView(my_unidade);

            // And now, we change the SPAN
            TableRow.LayoutParams the_param;
            the_param = (TableRow.LayoutParams)my_unidade.getLayoutParams();
            the_param.span = 3;
            my_unidade.setLayoutParams(the_param);

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


0

আমি মনে করি আপনার অন্য একটি লেআউটের চারপাশে একটি লেআউট মোড়ানো দরকার। অনুভূমিকভাবে একটি লেআউট তালিকা থাকুন, ভিতরে অন্য একটি (বা এই ক্ষেত্রে দুটি) তালিকা অনুভূমিকভাবে রাখুন।

আমি এখনও অ্যান্ড্রয়েডের 50-50 অংশে সুন্দরভাবে ইন্টারফেসটি বিভক্ত করতে অসুবিধা বোধ করছি।


আমি অজ্ঞাত কারণে, আমার লেআউটের ১/৩ অংশ ল্যান্ডস্কেপ মোডে লুকিয়ে রাখার কারণে একটি অন্য টেবিল-সংক্রান্ত বাগের আশেপাশে পেতে এটি শেষ করেছি।
স্পাইক উইলিয়ামস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.