为什么下面的代码失败?添加按钮后,为什么我的背景会消失?
我在我的main.xml中有一个蓝色的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,我不知道,将不得不摆弄它;)添加aswell后尝试无效? – Warpzit
我没有运气就玩过layoutparams设置。尝试使用addView(btn,100,100)来避免layoutparams。我试过invalidate()和invalidateRect(..)。当我在视图上调用getDrawingRect()时,我得到整个画布矩形,使得看起来没问题。 – SkolVikingsGuy