Хто-небудь може мені допомогти, як встановити ширину TextView
доwrap_content
наскрізного коду, а не з XML?
Я динамічно створюю TextView
in-код, так чи є в будь-якому випадку, як встановити його ширину wrap_content
наскрізний код?
Хто-небудь може мені допомогти, як встановити ширину TextView
доwrap_content
наскрізного коду, а не з XML?
Я динамічно створюю TextView
in-код, так чи є в будь-якому випадку, як встановити його ширину 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 базовий багаторядковий редактор тексту.
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 */
Невелике оновлення цієї публікації: якщо ви використовуєте ktx у своєму проекті Android, існує невеликий допоміжний метод, який значно полегшує оновлення LayoutParams.
Якщо ви хочете оновити, наприклад, лише ширину, ви можете зробити це за допомогою наступного рядка в Kotlin.
tv.updateLayoutParams { width = WRAP_CONTENT }
android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams