android: LayoutParams для TextView делает вид исчезающим, программным
Я ударил это с разных точек зрения. В основном суть такова:
Я выложил шаблон в XML для интерфейса, который НЕОБХОДИМО запускаться программно, поэтому он будет динамически заполняться во время прогона.
Проблема здесь заключается в том, что XML TextView имеет довольно много настроек макета (которые работают) и необходимы. Но если я действительно установил их в коде, TextView даже не появится.
- Scrollview может содержать только одного прямого дочернего
- Android Связать как web, так и @mentions все в одном TextView
- Создание прокрутки TextView на Android
- Возможно ли для TextView Marquee в виджетах расширить приложение AppWidgetProvider?
- Макет сообщения Whatsapp - Как получить представление времени в той же строке
(TextView, кстати, вложен внутри TableRow, таким образом, призыв к весу.) Сначала созданный мной XML-шаблон, который я использовал в качестве ссылки для кода, и он отлично работает:
Как я уже сказал, это прекрасно. Когда я запускаю один и тот же макет в коде, и применяю LayoutParams, TextView исчезает.
Вот соответствующий fragment:
int textViewExampleID = 9001; private TextView txtviewExample = new TextView(this); private void buildTextView(){ LayoutParams paramsExample = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,1.0f); txtviewExample.setId(textViewExampleID); txtviewExample.setBackgroundResource(R.drawable.textview_9patch_white); txtviewExample.setGravity(Gravity.CENTER); txtviewExample.setTextColor(getResources().getColor(android.R.color.black)); paramsExample.setMargins(20, 20, 20, 20); txtviewExample.setPadding(20, 20, 20, 20); txtviewExample.setTextSize(40); txtviewExample.setText("customExample"); //if I comment out the following line, this TextView displays. //if I leave it in, it doesn't display. txtviewExample.setLayoutParams(paramsExample); }
Я понимаю, что для LayoutParams есть всевозможные доступные classы, и я играл с ними все LinearLayout.LayoutParams, TableView.LayoutParams, RelativeLayout.LayoutParams, LayoutParams только сам по себе … Независимо от того, какой я пытаюсь, любая попытка вызова «setLayoutParams» отображает весь TextView. Я просмотрел форумы здесь и не нашел ответа. Это не может быть ЧТО необычно.
- Как настроить размер шрифта для текста, чтобы он соответствовал текстовому виду
- Как программно установить maxLength в Android TextView?
- Auto-fit TextView для Android
- Поместить постоянный текст внутри EditText, который должен быть не редактируемый - Android
- как установить emoji по unicode в текстовом режиме?
- Как изменить текст textView fragmentа из активности
- Как установить текст в EditText
- Проблема при использовании пользовательского шрифта - «родной шрифт не может быть создан»
хорошо, это было больно, но я, наконец, понял это. Самое главное, что я помню (что я только понял), это то, что из всех мириад LayoutParams
, вам нужно использовать тот, который относится к PARENT вида, над которым вы работаете, а не фактическое представление.
Поэтому в моем случае я пытался получить поля TextView
, но он TableRow
в TableRow
. Одно простое изменение заключалось в том, что тип используемых LayoutParams
был TableRow
для TableRow
:
private void buildTextView(){ // the following change is what fixed it TableRow.LayoutParams paramsExample = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,1.0f); txtviewExample.setId(textViewExampleID); txtviewExample.setBackgroundResource(R.drawable.textview_9patch_white); txtviewExample.setGravity(Gravity.CENTER); txtviewExample.setTextColor(getResources().getColor(android.R.color.black)); paramsExample.setMargins(20, 20, 20, 20); txtviewExample.setPadding(20, 20, 20, 20); txtviewExample.setTextSize(40); txtviewExample.setText("customExample"); txtviewExample.setLayoutParams(paramsExample); }
Спасибо, ребята, надеюсь, это пригодится кому-то еще по этой линии, так как я видел много полузадачных вопросов на форумах здесь, но не тот, который действительно определяет проблему.
private TextView txtviewExample = new TextView(this); private void buildTextView(){ LayoutParams paramsExample = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,1.0f); txtviewExample.setId(textViewExampleID); txtviewExample.setBackgroundResource(R.drawable.textview_9patch_white); txtviewExample.setGravity(Gravity.CENTER); txtviewExample.setTextColor(getResources().getColor(android.R.color.black)); paramsExample.setMargins(20, 20, 20, 20); txtviewExample.setPadding(20, 20, 20, 20); txtviewExample.setTextSize(40); txtviewExample.setText("customExample"); setContentView(txtviewExample);//when you don't use SETTER method for TextView you can't view the desireable text on the UI// }
// использование
какова 3-я переменная в layoutparams, которая должна делать, это альфа? что произойдет, если вы закомментируете paramsExample.setMargins
наконец, что произойдет, если вы в txtviewExample.setVisible(View.Visible)
после того, как вы setLayoutParams
?
это будут те вещи, которые я постараюсь, если вы не