これをさまざまな角度から見ました。基本的にこれは次のとおりです。
プログラムでNEEDSを実行するインターフェイスのテンプレートを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全体をレンダリングします。ここでフォーラムを精査しましたが、その答えはまだ見つかりませんでした。これは珍しいことではありません。
まあ、それはつらいことでしたが、ようやく理解できました。覚えておくべき最も重要なこと(私が気づいたこと)は、すべてのLayoutParams
の中で、実際のビューではなく、作業中のビューのPARENTに関連するものを使用する必要があることです。 。
そのため、私の場合、TextView
マージンを有効にしようとしていましたが、TableRow
内に配置されていました。 1つの簡単な変更は、使用されているLayoutParams
のタイプが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);
}
おかげで、うまくいけば、これは他の誰かにとって役に立つことを願っています、私がここでフォーラムで半関連の質問のalotを見ましたが、実際に問題を定義するものではありません。
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//
}
//使用する
layoutparamsの3番目の変数は何をするはずですか、そのアルファですか? _paramsExample.setMargins
_をコメントアウトするとどうなりますか
最後にsetLayoutParams
の後にtxtviewExample.setVisible(View.Visible)
にするとどうなりますか?
これらはあなたがしていない場合私がしようとするものになります