以下のコードはなぜ失敗するのですか?ボタンを追加すると背景が消えるのはなぜですか?
main.xmlにblue relativeLayoutがあります。クリックすると緑色のボタンが追加されます。
モトローラのXoomで画面をクリックすると、緑色のボタンが表示されますが、背景が青色から黒色に変わります。もう一度クリックすると、青い背景が表示されます。もう一度クリックすると黒が表示されます...
何が欠けていますか?
ありがとうございました。
package com.android.mikeviewtester;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
public class ViewTesterActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set the relative layout as our view
setContentView(R.layout.main);
RelativeLayout currentView = (RelativeLayout) findViewById(R.id.MyRelativeLayout);
// set a listener
currentView.setOnTouchListener((android.view.View.OnTouchListener) mOnTouchListener);
}
private android.view.View.OnTouchListener mOnTouchListener = new android.view.View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (v != null)
v.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_UP) {
android.widget.RelativeLayout vw = (android.widget.RelativeLayout) findViewById(R.id.MyRelativeLayout);
// create and add a new cyan button
Button btn = new Button(ViewTesterActivity.this);
btn.setBackgroundColor(Color.GREEN);
vw.addView(btn, 100, 100);
vw.invalidate();
btn.invalidate();
}
return true;
}
};
}
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/MyRelativeLayout"
android:background="#0000FF">
</RelativeLayout>
は、新しいボタンの設定viewgroup.layoutparamsとは何かを持っているかもしれませんが、私はわかりません、それと一緒に周りをしなければならないだろう;)あなたがまた追加した後tryed無効にする? – Warpzit
私は運がないlayoutparamsの設定で遊んだ。 addView(btn、100、100)を使って試して、layoutparamsをすべて避けるようにしました。私はinvalidate()とinvalidateRect(..)を試みました。ビュー上でgetDrawingRect()を呼び出すと、キャンバス全体が表示されるので、大丈夫です。 – SkolVikingsGuy