いろいろな角度からこれを叩きました。基本的に要点はこれです:
プログラムで実行する必要のあるインターフェイスのテンプレートをXMLでレイアウトしたので、実行中に動的に入力されます。
ここでの問題は、XML TextViewにかなりの数のレイアウト調整(機能する)があり、必要であるということです。しかし、実際にコードで設定すると、TextViewも表示されません。
(ちなみに、TextViewはTableRow内にネストされているため、weightが呼び出されます。)コードの参照として使用するために最初に設計した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全体を削除します。私はここでフォーラムを精査しましたが、答えはまったく見つかりませんでした。これは珍しいことではありません。