কোডের মাধ্যমে টেক্সটভিউয়ের জন্য মোড়ক_মন্দির প্রস্থকে সেট করা


92

কেউ কি সাহায্য কেমন করে আমাকে প্রস্থ সেট করতে পারি TextViewকরার wrap_contentকোড মাধ্যমে এবং XML থেকে না?

আমি গতিশীলভাবে একটি TextViewকোড তৈরি করছি , সুতরাং wrap_contentকোডের মাধ্যমে এর প্রস্থটি কীভাবে সেট করা যায় তার উপায় আছে ?

উত্তর:


127
TextView pf = new TextView(context);
pf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

বিভিন্ন লেআউটের মতো ConstraintLayoutএবং অন্যদের জন্য তাদের নিজস্ব LayoutParamsমত রয়েছে:

pf.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 

বা

parentView.addView(pf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

8
android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
ফ্রান্সিসকো

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

78

একই ফল অর্জনের জন্য আরও একটি উপায় রয়েছে। আপনার কেবলমাত্র একটি পরামিতি সেট করতে হবে, উদাহরণস্বরূপ 'উচ্চতা':

TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);

এটি দুর্দান্ত কাজ করে। এটি যদি এটি করা হয় তবে LinearLayoutএটি ll.invalidate()প্রয়োজনীয় তা উপস্থিত হয় না । কেন?
মিডওয়াইটার

4
আমি অনুমান করি আমরা কখনই জানতে পারব না
ডেনি

49

সামগ্রীর মোড়কে পরিবর্তনের TextViewপ্রস্থের জন্য সমাধান ।

textView.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT; 
textView.requestLayout();  
// Call requestLayout() for redraw your TextView when your TextView is already drawn (laid out) (eg: you update TextView width when click a Button). 
// If your TextView is drawing you may not need requestLayout() (eg: you change TextView width inside onCreate()). However if you call it, it still working well => for easy: always use requestLayout()

// Another useful example
// textView.getLayoutParams().width = 200; // For change `TextView` width to 200 pixel

6
সহজ এবং সঠিক সমাধান, কারণ এটি অন্যান্য পরামিতিগুলিকে ওভাররাইড করে না।
কুলমাইন্ড

4
মুছে ফেলার জন্য আমার অ্যানভারকে চিহ্নিত করেছেন কারণ এটি অনেক সহজ।
ফ্র্যাঙ্কক্রামনো

4
এটি সেরা সমাধান
পেড্রাম শাবানী

4

আমি অ্যান্ড্রয়েড জাভা বেস মাল্টি লাইন এডিটেক্সট পোস্ট করছি।

EditText editText = findViewById(R.id.editText);/* edittext access */

ViewGroup.LayoutParams params  =  editText.getLayoutParams(); 
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
editText.setLayoutParams(params); /* Gives as much height for multi line*/

editText.setSingleLine(false); /* Makes it Multi line */

1

আমি মনে করি এই কোডটি আপনার প্রশ্নের উত্তর দেয়

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) 
holder.desc1.getLayoutParams();
params.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
holder.desc1.setLayoutParams(params);

0

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

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

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