অ্যান্ড্রয়েডে তালিকাভিউয়ের উচ্চতা সীমাবদ্ধ করুন


92

আমি একটি নীচে একটি বোতাম প্রদর্শন করতে চান ListView। সমস্যাটি হ'ল, যদি ListViewপ্রসারিত হয় (আইটেম যুক্ত করা হয় ...), বোতামটি স্ক্রিনের বাইরে চলে যায়।

আমি LinearLayoutওজন সহ একটি চেষ্টা করেছি ( অ্যান্ড্রয়েডে প্রস্তাবিত : কেন দেখার জন্য কোনও ম্যাক্সহাইট নেই? ), তবে হয় আমার ওজন ভুল হয়েছে বা এটি কার্যকরভাবে কার্যকর হয়নি।

এছাড়াও, আমি কোথাও ব্যবহার করার ইঙ্গিতটি পেয়েছি RelativeLayoutListViewতারপর বোতাম তার সঙ্গে আরো উপরে স্থাপন করা হবে android:layout_abovePARAM।

এটির সাথে সমস্যাটি হ'ল আমি জানিনা কীভাবে পরে বোতামটি অবস্থান করব। আমি যে উদাহরণটি পেয়েছি তাতে নীচের ListViewভিউটি ব্যবহার করে সামঞ্জস্য করা হয়েছে android:layout_alignParentBottomতবে আমি চাই না যে আমার বোতামটি স্ক্রিনের নীচে আটকে থাকবে।

সেটহাইট-পদ্ধতি এবং প্রয়োজনীয় জায়গার কিছু গণনা ব্যতীত কোনও ধারণা?


সম্পাদনা: আমি প্রচুর দরকারী উত্তর পেয়েছি।

  • বিগস্টোন এবং ব্যবহারকারীর 639183 এর সমাধান প্রায় পুরোপুরি কার্যকর হয়েছিল worked যাইহোক, আমাকে বোতামের নীচে একটি অতিরিক্ত প্যাডিং / মার্জিন যুক্ত করতে হয়েছিল, কারণ এটি এখনও পর্দা থেকে আধা পথ যেতে হবে (তবে থামিয়ে দেওয়া হবে)

  • আপনি যদি স্ক্রিনের নীচে বোতামটি স্থির করতে চান তবে আপেক্ষিক বিন্যাসের সাথে আদিনিয়ার উত্তরটি ঠিক আছে। এটি আমার ইচ্ছা মতো নয় তবে এখনও অন্যদের জন্য কার্যকর হতে পারে।

  • অ্যাঞ্জেলস এর সমাধানটি আমি শেষটি বেছে নিয়েছিলাম কারণ এটি আমার পছন্দসই প্রভাবগুলি তৈরি করেছিল। তবে আমি LinearLayoutবোতামটির চারপাশে দুটি ছোটখাট পরিবর্তন করেছি :

    • প্রথমত, আমি আমার লেআউট যে কোন পরম মান চাইনি, আমি পরিবর্তিত android:layout_height="45px"করতে wrap_content, যা শুধু জরিমানা হিসাবে ভাল কাজ করে।

    • দ্বিতীয়ত, আমি বাটনটি অনুভূমিকভাবে কেন্দ্রীভূত করতে চেয়েছিলাম, যা কেবল উল্লম্ব দ্বারা সমর্থিত LinearLayout, আমি অ্যান্ড্রয়েড: ওরিয়েন্টেশন = "অনুভূমিক" থেকে "উল্লম্ব" এ পরিবর্তন করেছি।

    AngeloS তার প্রাথমিক পোস্টে বলেছেন যে তিনি ছিলেন না নিশ্চিত যদি android:layout_weight="0.1"এ PARAM LinearLayoutপ্রায় ListViewকোনো প্রভাব ছিল; আমি শুধু চেষ্টা করেছি এবং এটি বাস্তবেও! ছাড়া, বোতামটি আবার পর্দার বাইরে চলে যায়।


এইভাবে অভ্যন্তরীণ আপেক্ষিক বিন্যাসটি স্ক্রিনের চেয়ে দীর্ঘ বাড়ছে, এক ধাপ যুক্ত হতে পারে android:layout_alignParentBottom="true"। তবে স্পষ্টরূপে, খুব কম আইটেম থাকা অবস্থায় আপনি কি বাটনটি তালিকার তালিকার সাথে যুক্ত থাকতে চান? যদি হ্যাঁ, ধনী কি বলে দেখুন।
বিগস্টোনস

হ্যাঁ, এটাই আমি চাই
জেলিফিশ

: বছর পর, এখন আমরা ConstraintLayout সর্বাধিক উচ্চতা ধন্যবাদ আছে stackoverflow.com/questions/42694355/...
user1506104

উত্তর:


55

আমি ঠিক এই বিষয়টি ছিল এবং তার সমাধানের আমি দুই পৃথক নির্মিত LinearLayoutsবাড়িতে ListViewএবং Buttonযথাক্রমে। সেখান থেকে আমি অন্য উভয় করা Linear Layoutএবং সেট যে ধারক এর android:orientationকাছে vertical। আমিও ওজন সেট LinearLayoutযে আয়োজিত ListViewকরতে 0.1কিন্তু আমি জানি যে যদি কোনো প্রভাব নেই না। সেখান থেকে, আপনি নীচের পাত্রে উচ্চতা সেট করতে পারেন (এটিতে আপনার বোতাম রয়েছে) আপনার পছন্দ মতো উচ্চতাতে।

এটিকেই এডিট করুন যার অর্থ:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.1"
    android:orientation="horizontal">

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:dividerHeight="2px"></ListView>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="45px"
    android:background="@drawable/drawable"
    android:orientation="horizontal">

    <Button
        android:id="@+id/moreButton"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:background="@drawable/btn_more2"
        android:paddingRight="20px" />

</LinearLayout>

উপরের সমাধানটি স্ক্রিনের নীচে বোতামটি ঠিক করবে।


তালিকার নীচে বোতামটি ভাসা লাভ করার জন্য উচ্চতা পরিবর্তন ListView01করতে wrap_content:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.1"
    android:orientation="horizontal">

    <ListView
        android:id="@+id/ListView01"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:dividerHeight="2px"></ListView>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="45px"
    android:background="@drawable/drawable"
    android:orientation="horizontal">

    <Button
        android:id="@+id/moreButton"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="true"
        android:background="@drawable/btn_more2"
        android:paddingRight="20px" />
</LinearLayout>


আমি এটিকে <divএইচটিএমএলে ট্যাগ করার জন্য সিমলিয়ার কিছু হিসাবে দেখছি .. এটি কেবল একটি মোড়ক এবং এই সমাধানটি অবশ্যই কাজ করে।
অ্যাঞ্জেলোস

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

4
হ্যাঁ! এইটা কাজ করে! গুরুত্বপূর্ণ লক্ষণীয়, আপনার প্রথম এবং ২ য় সমাধানের মধ্যে একমাত্র পার্থক্যটি রৈখিক র‌্যাপটি প্রয়োজন মোড়ানো_কন্টেন্টের, তাই আমি একটি প্রবর্তন টাইপ সেট আপ শেষ করেছি: imgur.com/c9L1Z । অন্য যে কেউ এটি খুঁজে পায়: ওজন করা গুরুত্বপূর্ণ, তবে কোনও মান নিতে পারে।
স্যাম

4
এর মতো সমস্ত মতামত মোড়ানোর দরকার নেই - @ স্পার্কলের সমাধানটি দেখুন
রিচার্ড লে ম্যাসুরিয়ার

45px বা বোতামের বিন্যাসের জন্য একটি সঠিক মান স্থাপন করা দরকার? পরিবর্তে আমাকে মোড়ানোর_পরিচালনা করা দরকার
মারিও ভেলাস্কো

65

আমি কোডে এই সমস্যাটি সমাধান করেছি, তালিকার উচ্চতা সেট করে কেবল যদি এতে 5 টির বেশি আইটেম থাকে:

if(adapter.getCount() > 5){
        View item = adapter.getView(0, null, listView);
        item.measure(0, 0);         
        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, (int) (5.5 * item.getMeasuredHeight()));
        listView.setLayoutParams(params);
}

লক্ষ্য করুন যে আমি একক আইটেমের উচ্চতার সর্বোচ্চ উচ্চতা 5.5 গুণ স্থাপন করেছি, তাই ব্যবহারকারীরা নিশ্চিতভাবে জানতে পারবেন যে কিছু করার জন্য কিছু স্ক্রোলিং রয়েছে! :)


4
চমৎকার উত্তর. সেই কোডটি দিয়ে আমি আমার আইটেমটির উচ্চতা আবিষ্কার করেছি এবং এখন আমি কতটা আইটেন চাই তা দেখানোর জন্য আমার তালিকার আকার নির্ধারণ করতে পারি। ধন্যবাদ
দেরজু

4
এটি সেরা উত্তর। আপনি যখন 5 লাইন কোড দিয়ে সমস্যাটি সমাধান করতে পারেন তখন কেন নেস্টেড এক্সএমএল 50 টি লাইন লিখুন?
গ্রেগ এনিস

আপনাকে ধন্যবাদ শৈল নিখুঁতভাবে কাজ করেছেন।
আনজু

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

4
@ জায়েআর মন্তব্য করতে খুব বেশি দেরি করেন নি
মানজা

21

আপনার শেষ সম্পাদনায়, আপনাকে কেবল android:layout_above="@+id/butt1"নিজের তালিকাভিউ কোডটিতে যুক্ত করতে হবে ।

এবং আপনাকে (এবং এখানে যে প্রত্যেকে ইতিপূর্বে একটি উত্তর চেষ্টা করেছিলেন) দেখানোর জন্য আপনাকে সত্যিকার অর্থে একের বেশি ব্যবহার করার দরকার নেই RelativeLayout, এখানে আপনার সংশোধিত কোডটি রয়েছে :

   <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/bkg">
    <TextView
        android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextView1"
        android:layout_alignParentTop="true">
    </TextView>
    <TextView
        android:id="@+id/textView2"
        android:layout_below="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="TextView2"
        android:layout_centerHorizontal="true">
    </TextView>
    <Button
        android:id="@+id/butt1"
        android:text="string/string3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true">
    </Button>
    <ListView
        android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dip"
        android:layout_marginBottom="2dip"
        android:drawSelectorOnTop="false"
        android:visibility="visible"
        android:layout_below="@+id/textView2"
        android:layout_above="@+id/butt1" />
    </RelativeLayout>

এবং ফলাফল , কিছু এলোমেলো তালিকা ব্যবহার করে:
এখানে চিত্র বর্ণনা লিখুন


4
আপনার সাহায্যের জন্য খুব, অনেক ধন্যবাদ, কিন্তু বোতাম পর্দার নীচে রাখি মাত্র ছিল না আমি কি উদ্দেশ্যে। এটি তালিকাভিউয়ের নীচে থাকার কথা।
জেলিফিশ

প্রকৃতপক্ষে, এই মুহুর্তে লিনিয়ারআলআউটগুলি আপনি যা চান তার একমাত্র সমাধান হতে পারে বলে মনে হয়; আমি রিলেটিভ লেআউটগুলির সাথে বিভিন্ন সংমিশ্রণ চেষ্টা করেছি এবং আসলেই কেউ কাজ করেনি :( ... তবে আমি খুশী হয়েছি আপনি নিজের উত্তরটি পেয়েছেন
অ্যাডিনিয়া

4
ধন্যবাদ! এইটা ঠিক আছে!
গুইচারা

6

ব্যবহার LinearLayoutকরুন, আপনার উচ্চতা নির্ধারণ করে ListViewএবং Buttonকরতে wrap_contentএবং একটি ওজন = 1 যোগ ListView। এটি আপনার ইচ্ছা মতো কাজ করা উচিত।
এবং হ্যাঁ, সেট layout_gravityএর Buttonজন্যbottom


6

অ্যাঞ্জেলস এর সমাধান থেকে অনুপ্রাণিত নেস্টেড পাত্রে ব্যবহার না করে এটি করার একটি উপায় খুঁজে পেয়েছেন।

আমি LinearLayoutএকটি উল্লম্ব অভিযোজন সহ একটি ব্যবহার করেছি , এর একটি ListViewএবং একটি বোতাম রয়েছে। আমি সেট android:layout_weight="0.1"জন্য ListView

এটি সর্বদা তালিকার নীচে বোতামটি স্টিক করার ব্যবস্থা করে। এবং তালিকাটি বড় হওয়ার সাথে সাথে বোতামটি পর্দার বাইরে চলে যায় না।

<ListView
    android:id="@+id/notes_list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="0.1"        
    />

<Button
    android:id="@+id/create_note_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"        
    android:onClick="onCreateButtonClicked"
    android:text="@string/create_notes"
    />

4
না, এটি চেষ্টা করে দেখুন এবং বোতামটি পর্দার নীচে থাকে, এটি তালিকার নীচে থাকে না। :(
আদিনিয়া

@ অ্যাডিনিয়া এটি কমপক্ষে ৪.৪.৩ এ নিখুঁতভাবে কাজ করে। সুন্দর সমাধান, স্পার্কল এর আরও বেশি ভোট হওয়া উচিত।
রিচার্ড লে ম্যাসুরিয়ার

হুম..আমার আপনার লেআউটে কিছু অন্য সেটিংস আছে? আমি মাত্র একটি নেক্সাস 4 এ আবার 4.4.3 দিয়ে পরীক্ষা করেছি এবং বোতামটি তালিকার নয়, তালিকার নীচে থাকে, এটি তালিকায় লেগে যায় না।
অ্যাডিনিয়া

4
@ রিচার্ড লে ম্যাসুরিয়ার আসলে android:layout_height="wrap_content" আপনার সমাধান হিসাবে লিনিয়ারলআউটের জন্য, এটি নিখুঁতভাবে কাজ করছে এবং কেবল ৪.৪.৩-তে নয়, যেহেতু স্পার্কল্ল এটি উল্লেখ করেনি, তাই আমি match_parentআগেই এটি চেষ্টা করেছিলাম ।
আডিনিয়া

পাইতেও কাজ করছেন। +1
জুবায়ের ইউনাস

5

RelativeLayout একটি সমাধান, যদি আপনি বাটনটি নীচের খুব কাছে না যেতে চান তবে আপনি মার্জিন যুক্ত করতে পারেন (একটি বোতাম প্যাডিং এটি ভেঙে ফেলবে কারণ এটি 9-প্যাচ ব্যাকগ্রাউন্ড ব্যবহার করে এবং এটি নিজস্ব প্যাডিং সেট করে)।

আপনি যদি এটি ব্যবহার করেন তবে এটি একই হবে LinearLayout: আপনি যা চান তা অর্জনের উপায়টি সেট করাListView উচ্চতা = 0 এবং ওজন = 1 এবং বোতামের উচ্চতা = র‌্যাপ_কন্টেন্ট এবং ওজন = 0। (উভয়কে মোড়ানো_ কনটেন্টে সেট করা, যেমন ব্যবহারকারী 963৯১৮৩ বলেছেন, ListViewএর উচ্চতা সীমাবদ্ধ করবে না )।


হ্যাঁ, এটি ListView
14:37-

@ ব্যবহারকারী 63৩৯১৮৩ স্রেফ চেষ্টা করেছেন, আপনি ঠিক বলেছেন আমি দুঃখিত, আমি এ সম্পর্কে নিশ্চিত ছিলাম।
বিগস্টোনস

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

@ জেলিফিশ: আমি জানি না, আমার ইউরোপীয়তা @ ব্যবহারকারী 9৩৯৮৩ দ্বারা ভেঙে ফেলা হয়েছিল। ধারণাটি হ'ল পুরো উচ্চতাটি দুটি মতামত দ্বারা ভাগ করা হবে। তারা যে পরিমাণ ভাগ ভাগ পাবে তা তাদের ওজন দ্বারা দেওয়া হয়, সুতরাং 1-0 -> প্রথমটি সমস্ত কিছু (2-1 দ্বিতীয়কে দ্বিতীয় স্থানের 1/3 দেয়)। আমি ভেবেছিলাম যে কোনও স্ক্রোলিং ভিউতে মোড়ানো_ কনটেন্ট সেট করা এটিকে এর সামগ্রীর চেয়ে উচ্চতর করে তুলবে। তবে .. আপনি কি_পরিবারকে বাইরের বিন্যাসটি সেট করেছেন?
বিগস্টোনস

এটি খুব অদ্ভুত যে কোনও নেস্টেড রিলেটিভলআউট (ম্যাক্সিমের পরামর্শ অনুসারে) কাজ করে না। আমি কেবল এটি উপরে পোস্ট করতে পারি, কারণ আমার অনুভূতিটি পেয়েছি যে আমি সবেমাত্র কিছু মিস করেছি ...
জেলিফিশ

2

নেস্টেড পাত্রে ব্যবহার করে আপনি সম্ভবত এই কাজটি করতে পারেন। এটি সম্ভবত যে আপনি বাটনটি একটি দ্বিতীয় (অভ্যন্তরীণ) পাত্রে মোড়ানোর প্রয়োজন হতে পারে যাতে এটি আরও বেশি জায়গা নেয় এবং কেবলমাত্র বোতামটি অভ্যন্তরীণ পাত্রে শীর্ষে সরে যায়।

এর মতো সম্ভাব্য কিছু:

রিলেটিভলআউট

-- তালিকা দেখুন

- RelativeLayout

---- বোতাম

দুটি ধারকটিতে বিভিন্ন প্রান্তিককরণ বিকল্পগুলি ব্যবহার করে, আপনি এটি কাজ করতে সক্ষম হবেন।


আমি মনে করি একটি আপেক্ষিক লেআউট ব্যবহার করা সর্বোত্তম সমাধান, তবে আপনি কেন নেস্টেড পাত্রে ব্যবহার করবেন তা আমি সত্যিই দেখতে পাচ্ছি না, যখন আপনি কেবল বাটনটির মতো কিছু ব্যবহার করতে পারেন android:layout_marginTop="30dip" , উদাহরণস্বরূপ, যদি আপনি তালিকার এবং বোতামের মধ্যে আরও জায়গা চান।
অ্যাডিনিয়া

প্রশ্নে ওপি বলেছে যে যদি সে লিস্টভিউয়ের সাথে সম্পর্কিত বোতামের অবস্থানটি কঠোরভাবে করে তোলে তবে তালিকাভিউ যথেষ্ট দীর্ঘ হয়ে গেলে এটি পর্দার বাইরে চলে যায়। এই ধরণের ক্ষেত্রে আপনাকে নেস্টেড কনটেইনারগুলির সাথে কৌশলযুক্ত হতে হবে
ধনী

2

এটি করার সবচেয়ে পরিষ্কার উপায় এটি:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
  <ListView
      android:id="@+id/ListView01"
      android:layout_width="fill_parent"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:dividerHeight="2px">
  </ListView>
  <FrameLayout
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:background="@drawable/drawable"
      >
    <Button android:background="@drawable/btn_more2"
        android:id="@+id/moreButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:paddingRight="20px"
        />    
  </LinearLayout>
</LinearLayout>

এটি অ্যাঞ্জেলসের সমাধানের অনুরূপ তবে আপনার তালিকার ভিউটি মোড়ানো এমন লিনিয়ারআউট দরকার নেই। এছাড়াও আপনি একটি ফ্রেমলআউট ব্যবহার করতে পারেন যা বোতামটি মোড়ানোর জন্য লিনিয়ারলআউটের তুলনায় হালকা।


2

ধারণাটি খুব ভাল সমাধানগুলিতে রচনা করা হয়েছে:

তারা উভয় কমপক্ষে v4.4.3 এ নিখুঁতভাবে কাজ করছে বলে মনে হচ্ছে।

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


লেআউটটি স্পার্কলের সমাধানের উপর ভিত্তি করে তৈরি করা হয়েছে, কারণ এতে কম নেস্টেড লেআউট রয়েছে। বর্তমান লিনটি চেকগুলি প্রতিফলিত করতে আপডেট করা হয়েছে।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    tools:context="MainActivity" >

    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <Button
        android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Grow List"
        tools:ignore="HardcodedText" />

</LinearLayout>

ক্রিয়াকলাপ নিজের জন্য সমাধানটি পরীক্ষা করতে বয়লারপ্লিট কোড সরবরাহ করে।

public class MainActivity extends Activity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ListView listview = (ListView)findViewById(R.id.listview);
        final ArrayAdapter<String> adapter = 
                new ArrayAdapter<String>(this,
                                         android.R.layout.simple_list_item_1,
                                         new ArrayList<String>());
        adapter.setNotifyOnChange(true);
        listview.setAdapter(adapter);

        findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
        {

            @Override
            public void onClick(View v)
            {
                int count = adapter.getCount();
                adapter.add(String.valueOf(count));
                listview.setSelection(count);
            }
        });
    }
}

এটি "সম্প্রদায়ের উইকি" হওয়ায় যুক্ত বা উন্নত করতে নির্দ্বিধায় হন।


1

নীচে বোতামের সাথে রিলেটিভলআউট ব্যবহার করার চেষ্টা করুন। লেআউটের উচ্চতাটিকে "মোড়ানো_ কনটেন্ট" হিসাবে সেট করুন। আমি চেষ্টা করে দেখিনি। শুধু ধারণা


আমি সত্যিই ভেবেছিলাম এটি কাজ করা উচিত, তবে মনে হয় এটি হয় না। লেআউটটি সমস্ত বাকী জায়গা পূরণ করে, যেন উচ্চতাটি ম্যাচ_প্যারেন্টে সেট করা থাকে। যদিও তা বোঝায় না।
জেলিফিশ

1

লিনিয়ারলআউটে, কেবলমাত্র android:layout_weight="1"আপনাকে তালিকাভিউতে যুক্ত করুন


0

নিম্নলিখিতটি আমার পক্ষে কাজ করেছে ...

 if(adapter.getCount() > 3){
                    View item = adapter.getView(0, null, impDateListView);
                    item.measure(0, 0);         
                    LayoutParams params = impDateListView.getLayoutParams();
                    params.width = LayoutParams.MATCH_PARENT;
                    params.height = 3 * item.getMeasuredHeight();
                    impDateListView.setLayoutParams(params);


                }

দ্রষ্টব্য: params.width = ... এছাড়াও সেট করা দরকার ...

উপরের উদাহরণটি হ'ল আপনি যখন টেবিলের ভিতরে টেবিলরো এবং তালিকাভিউ ব্যবহার করেন ...


0

লিনিয়ার লেআউটে সামগ্রী মোড়ানো

তালিকায় ভিউ অ্যাড করুন: অ্যান্ড্রয়েড: লেআউট_ ওয়েট = "1"

আপনার বোতাম স্থির উচ্চতা সেট

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical">

<ListView
    android:id="@+id/my_list"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1">
</ListView>

 <Button
    android:text="Button"
    android:layout_width="match_parent"
    android:layout_height="50dp"/>

</LinearLayout>

0

আপনি যদি তালিকার উপাদানগুলির তালিকায় উপাদান যুক্ত হওয়ার সাথে সাথে তালিকার দৃশ্যের নীচের বিষয়বস্তুটি নীচে সরতে চান তবে এই সমাধানটি চেষ্টা করুন:

তালিকা দৃশ্যের নীচে ইতিবাচক প্যাডিং এবং "পাদলেখ" এর শীর্ষে নেতিবাচক প্যাডিং যুক্ত করুন। এটি লিনিয়ার লেআউটে বা আপেক্ষিক বিন্যাসে কাজ করবে।

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="50dp"/>

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="-50dp"/>

-1

যেহেতু কোনও ম্যাকহাইট অ্যাট্রিবিউট নেই, তাই আপনার সেরা বাজি হয় তালিকাগুলির উচ্চতা সেট মানকে সেট করা, বা ব্যবহার করা wrap_content


-2

আমি তালিকাটি ভিউকে একটি স্ক্রোলভিউয়ের মধ্যে রেখে এটি সমাধান করেছি। লিন্ট এটি পছন্দ করেনি, তবে একটি মিনি হাইট যুক্ত করে এবং ফিলিভিউপোর্টটি সত্য হিসাবে সেট করে আমার একটি ভাল ফলাফল হয়েছে।

    <ScrollView 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="1dp"
        android:layout_marginRight="1dp"
        android:minHeight="100dp"
        android:fillViewport="true"
        android:fadeScrollbars="false"
        android:paddingTop="2dp" 
        android:orientation="vertical"
        android:scrollbarAlwaysDrawVerticalTrack="true" >

        <ListView
            android:id="@+id/workoutAElistRoutines"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="fill_vertical"
            android:background="@drawable/dialog_inner_border_tan"
            android:choiceMode="singleChoice"
            android:orientation="vertical"
            android:paddingLeft="3dp"
            android:paddingRight="3dp" >

        </ListView>
    </ScrollView>        

আমি এই পদ্ধতির চেষ্টা করেছি, এমনকি আপনি এটি তালিকার আকারকে সীমাবদ্ধ করেন, এটি আমাকে তালিকা-দর্শনটি স্ক্রোল করতে দেয় না, যা বিশ্রী। তুমি কি জানো কেন?
এডুয়ার্ডো

7
কখনও কোনও স্ক্রোলভিউয়ের ভিতরে একটি তালিকা ভিউ রাখেনি!
jenzz

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