为什么下面的代码会失败?
我的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>
答案 0 :(得分:2)
我认为问题来自onCreate()的en调用setContentView()方法。 尝试那样
public void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
// set the relative layout as our view
setContentView(R.layout.main);
currentView = (RelativeLayout)findViewById(R.id.main);
// create a red button
Button btn = new Button( this );
btn.setBackgroundColor( Color.RED );
Relative.LayoutParams params = new Relative.LayoutParams( 100, 100 );
currentView.addView( btn, params );
// setup the view (blue background)
currentView.setBackgroundColor( Color.BLUE );
currentView.setOnTouchListener( (android.view.View.OnTouchListener) mOnTouchListener );
}
你的main.xml文件应该是这样的:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
答案 1 :(得分:1)
我不确定错误是否来自那个但你没有使用正确的布局参数。 您应该用于视图的布局参数是来自父级的参数。 在你的情况下,你应该使用RelativeLayout.LayoutParams为你的按钮,我想你的相对布局FrameLAyout.LayoutParams。