Я ударил это с разных сторон. В основном суть такова:
Я выложил шаблон в XML для интерфейса, который НЕОБХОДИМО запускать программно, поэтому он будет динамически заполняться во время запуска.
Проблема здесь в том, что XML TextView имеет довольно много настроек макета (которые работают) и необходимы. Но если я на самом деле устанавливаю их в коде, TextView даже не отображается.
(Кстати, TextView вложен в TableRow, таким образом, вызов веса.) XML-шаблон, который я разработал первым, чтобы использовать его в качестве ссылки для кода, таков, и он отлично работает:
<TextView
android:id="@+id/txtviewWhiteBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:background="@drawable/textview_9patch_white"
android:gravity="center"
android:text="75"
android:textColor="@android:color/black"
android:layout_margin="20dp"
android:padding="20dp"
android:textSize="40dp" />
Как я уже сказал, это идеально подходит. Когда я запускаю тот же макет в коде и применяю LayoutParams, TextView исчезает.
Вот соответствующий фрагмент:
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, и я играл с ними всеми LinearLayout.LayoutParams, TableView.LayoutParams, RelativeLayout.LayoutParams, LayoutParams просто сам по себе... Независимо от того, какой из них я пытаюсь, любая попытка вызова "setLayoutParams" полностью удаляет TextView. Прошерстил тут форумы, ответа так и не нашел. Это не может быть НАСТОЛЬКО редкостью.
TableRow.LayoutParams
developer.android.com/reference/android/widget/ - person code-jaff   schedule 15.08.2012