レイアウトを拡張する (または動的に作成する) メソッドを作成し、特定のビュー (この場合は TextViews) を追加してから、レイアウトをビューとして戻すメソッドを作成することは可能ですか? (どういうわけか) メインに組み込むことができます。ネストのような他のクラスのレイアウトですが、要素を動的に追加しますか?
user2543382
質問する
117 次
3 に答える
3
はい、LayoutInflaterクラスを使用して、既存のレイアウトを拡張できます。次のようになります。
public static View GetLayout(final Context c){
final LayoutInflater inflater = LayoutInflater.from(c);
final View v = inflater.inflate(R.layout.activity_main, null);
//find the container where you want to insert your dynamic items
final LinearLayout placeholder = (LinearLayout) v.findViewById(R.id.linearLayout1);
//create the new textview
final TextView text = new TextView(c);
text.setText("Some text");
placeholder.addView(text, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
return v;
}
質問では、このビューを「他のクラス」に戻すように求められましたが、他の回答は同じクラスからそうしています。つまり、コンテキストがあることを意味します。別のクラスからこれを行うには、ここで行っているようにコンテキストを渡すか、他の方法 (インスタンス オブジェクトが必要な場合はコンストラクター呼び出しなど) を渡す必要があります。
于 2013-07-10T21:40:11.293 に答える
1
はい、可能です:
... onCreate()
{
setContentView(...);
ViewGroup myContainer=(ViewGroup)findViewById(R.id.myContainer);
View v=inflateMySpecialView();
//=<set layoutParams for the view if needed
myContainer.addView(v);
}
public View inflateMySpecialView()
{
ViewGroup viewgroup=(ViewGroup ) getLayoutInflater().inflate(R.layout.my_custom_layout, null,false);
//do some stuff with the inflated viewgroup.
return viewgroup;
}
于 2013-07-10T21:40:15.773 に答える