私はこれに夢中になる。
実用的な解決策が見つかりませんでした(stackoverflowからいくつか試してみました)
シナリオ(これは、すでに行われている実際のスクリーンショットです):
私は彼の属性としてビューを持っているアクティビティを持っています。
このビューは、View.addView(myView)を介して別のビューを追加します。
ここで、myViewにボタンを追加します(具体的には、MotionEvent.ACTION_UPの後に、ボタンが右下隅に表示されます(これにより、ロボットがトラックを駆動し始めます))
これが私のコードのショートカットです:
public class ModeRouting extends View {
public ModeRouting(Context context) {
super(context);
Button asuroStartButton = new Button(context) //does not work
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int actionevent = event.getAction();
if (actionevent == MotionEvent.ACTION_UP
|| actionevent == MotionEvent.ACTION_CANCEL) {
asuroStartButton.visible=true;
view.add(asuroStartButton);
}
return true;
}
}
と私の活動:
//in constructor
contentView = (FrameLayout) findViewById(R.id.content);
onClickListenerFacade(routingMode, route);
//this removes all views from stack and places the new one on the view
private void onClickListenerFacade(View v, final View target) {
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
contentView.removeAllViews();
contentView.setBackgroundColor(0xff000000);
contentView.addView(target);
modeSelectorAnimation();
}
});
}
mainactivity.xmlにボタンを作成し、mainactivityでインスタンス化しようとしました。
ここでいくつかのポイントが欠けていますが、どちらかわかりません。
私のビューは純粋に動的であるため(layout.xmlはありません)、layout.xmlを使用する必要はないと思います(おそらくそれが私の心の妨げになります)が、代わりにボタンの属性も動的に設定します。
ヒントは大歓迎です!