Вот код:
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
linearLayout.setPadding(dpToPx(left), dpToPx(top), dpToPx(right), dpToPx(bottom));
linearLayout.setBackgroundColor(Color.parseColor(c.getString(c.getColumnIndex(dbHelper.KEY_MAINCOLOR))));
TextView newTextView = new TextView(this);
newTextView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
newTextView.setTextColor(Color.parseColor("#ffffff"));
newTextView.setText("123456");
linearLayout.addView(newTextView);
toAddGroups.addView(linearLayout);
Но он почему-то он работает не правильно: Создается два linearLayout, но пустые, без TextView. Что я делаю не так?
Причем, если я добавляю такой textView в toAddGroups, то он добавляется.
Добавить TextView в программно созданный LinearLayout
Пусть корневым контейнером у нас будет FrameLayout, то есть:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Создаем LinearLayout и задаем ему атрибуты:
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
Создаем и конфигурируем TextView:
TextView textView = new TextView(this);
textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
textView.setText("New TextView");
Добавляем созданный TextView в LinearLayout, а затем LinearLayout в корневой FrameLayout:
linearLayout.addView(textView);
mRootFrameLayout.addView(linearLayout);
Касательно Вашего примера: я чуть-чуть изменил код (вручную задал отступы и цвета):
mRootFrameLayout = (FrameLayout) findViewById(R.id.root_frame_layout);
LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
linearLayout.setPadding(5, 5, 5, 5);
linearLayout.setBackgroundColor(Color.parseColor("#00FF00"));
TextView newTextView = new TextView(this);
newTextView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
newTextView.setTextColor(Color.parseColor("#ffffff"));
newTextView.setText("123456");
linearLayout.addView(newTextView);
mRootFrameLayout.addView(linearLayout);
И этот код работает корректно. Проверьте, какой цвет Вы устанавливаете для linearLayout, не #ffffff случайно? В таком случае надпись будет сливаться с фоном.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей