ทุกคนสามารถช่วยเหลือฉันวิธีการกำหนดความกว้างของTextView
การwrap_content
ผ่านรหัสและไม่ได้มาจาก XML?
ฉันกำลังสร้างTextView
รหัสในแบบไดนามิกดังนั้นจะมีวิธีตั้งค่าความกว้างเป็นwrap_content
รหัสผ่านได้อย่างไร
ทุกคนสามารถช่วยเหลือฉันวิธีการกำหนดความกว้างของTextView
การwrap_content
ผ่านรหัสและไม่ได้มาจาก XML?
ฉันกำลังสร้างTextView
รหัสในแบบไดนามิกดังนั้นจะมีวิธีตั้งค่าความกว้างเป็นwrap_content
รหัสผ่านได้อย่างไร
คำตอบ:
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));
มีอีกวิธีหนึ่งที่จะบรรลุผลเช่นเดียวกัน ในกรณีที่คุณต้องการตั้งค่าพารามิเตอร์เพียงตัวเดียวเช่น "ความสูง":
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()
จำเป็น ทำไม?
โซลูชั่นสำหรับการเปลี่ยนแปลง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
ฉันกำลังโพสต์ข้อความแก้ไขหลายบรรทัดฐาน Java ของ Android
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 */
ฉันคิดว่ารหัสนี้ตอบคำถามของคุณได้
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)
holder.desc1.getLayoutParams();
params.height = RelativeLayout.LayoutParams.WRAP_CONTENT;
holder.desc1.setLayoutParams(params);
การอัปเดตเล็กน้อยในโพสต์นี้: หากคุณใช้ ktx ในโปรเจ็กต์ Android ของคุณมีวิธีการช่วยเหลือเล็กน้อยที่ทำให้การอัปเดต LayoutParams ง่ายขึ้นมาก
หากคุณต้องการอัปเดตเช่นเฉพาะความกว้างคุณสามารถทำได้ด้วยบรรทัดต่อไปนี้ใน Kotlin
tv.updateLayoutParams { width = WRAP_CONTENT }
android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams