0

私はこれに夢中になる。

実用的な解決策が見つかりませんでした(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はありません)、la​​yout.xmlを使用する必要はないと思います(おそらくそれが私の心の妨げになります)が、代わりにボタンの属性も動的に設定します。

ヒントは大歓迎です!

4

2 に答える 2

1

View (LinearLayout、RelativeLayout、FrameLayout など) だけでなく ViewGroup を拡張したい - それらは子ビューを処理します。

于 2013-02-27T19:05:04.393 に答える
0

ビュー/アクティビティ全体を更新する必要があると思います。onResume メソッドでこれを実行してみてください。おそらくこれが役立ちます。しかし、あなたはlayout.xmlを使用していないので、これがあなたに役立つかどうかはわかりません..

@Override
protected void onResume(){
super.onResume();
setContentView(R.layout.activity_main);
}
于 2013-02-27T19:05:59.457 に答える