我在下面有一些代码可以创建一个RelativeLayout并为其添加一个按钮。它从onCreate()创建时绘制得很好,在红色背景上显示一个蓝色按钮。
但是当点击第一个新的ReltativeLayout时,新的按钮显示在黑色背景上,所以我的RelativeLayout不会显示。
有趣的是,如果我注释掉添加按钮的行,它就会起作用,所以按钮会影响相对布局。
感谢您的帮助。
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.view.ViewGroup;
import android.widget.Button;
import android.widget.RelativeLayout;
public class ViewTesterActivity extends Activity {
void createNewView( int bgColor, int btnColor ) {
// create a new relative layout
android.widget.RelativeLayout newView = new android.widget.RelativeLayout( this );
// create a button
Button btn = new Button( this );
// set the background color
btn.setBackgroundColor( btnColor );
// create a layoutParams struct for adding the button to the relative layout view
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( 100, 100 );
// add the button to the relative layout
newView.addView( btn, params );
// set the relative layout background color
newView.setBackgroundColor( bgColor );
// set the ontouch listener for the relativeLayout
newView.setOnTouchListener( (android.view.View.OnTouchListener) mOnTouchListener );
// create the layout to fill the activity
RelativeLayout.LayoutParams viewParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
// set the relative layout as the view
setContentView( newView, viewParams );
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
// create and set the initial view
createNewView( Color.RED, Color.BLUE );
}
// ios - (void)buttonWasPressed:(id)whichButton {
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 ) {
// create and set a new view
createNewView( Color.GREEN, Color.MAGENTA );
}
return true;
}
};
}
答案 0 :(得分:2)
对您的代码进行更改,即在致电v.setVisibility(View.GONE);
createNewView(Color.GREEN, Color.MAGENTA);