Siapa pun dapat membantu saya bagaimana untuk mengatur lebar TextView
untuk wrap_content
melalui kode dan bukan dari XML?
Saya secara dinamis membuat TextView
kode in, jadi adakah cara untuk mengatur lebarnya wrap_content
melalui kode?
TextView pf = new TextView(context);
pf.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
Untuk tata letak yang berbeda seperti ConstraintLayout
dan lainnya, mereka memiliki sendiri LayoutParams
, seperti:
pf.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
atau
parentView.addView(pf, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
Ada cara lain untuk mencapai hasil yang sama. Jika Anda hanya perlu menetapkan satu parameter, misalnya 'tinggi':
TextView textView = (TextView)findViewById(R.id.text_view); ViewGroup.LayoutParams params = textView.getLayoutParams(); params.height = ViewGroup.LayoutParams.WRAP_CONTENT; textView.setLayoutParams(params);
sumber
LinearLayout
, tampaknya tidakll.invalidate()
perlu. Mengapa?Solusi untuk mengubah
TextView
lebar untuk membungkus konten .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
sumber
Saya memposting teks edittext multi baris android berbasis 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 */
sumber
Saya pikir kode ini menjawab pertanyaan Anda
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) holder.desc1.getLayoutParams(); params.height = RelativeLayout.LayoutParams.WRAP_CONTENT; holder.desc1.setLayoutParams(params);
sumber
Sedikit pembaruan pada posting ini: jika Anda menggunakan ktx dalam proyek Android Anda, ada sedikit metode pembantu yang membuat pembaruan LayoutParams jauh lebih mudah.
Jika Anda ingin memperbarui, misalnya hanya lebarnya, Anda dapat melakukannya dengan baris berikut di Kotlin.
sumber