I have some code below that creates a RelativeLayout and adds a button to it. It draws fine when created from onCreate(), shows a blue button on a red background.
But when creating a new ReltativeLayout when clicking on the first the new button shows on a black background, so my RelativeLayout doesn’t show.
The funny thing is that it works if I comment out the line that adds the button, so somehow the button is impacting the relative layout.
Thanks for any help.
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;
}
};
}
Make a change in your code, i.e. add
v.setVisibility(View.GONE);before callingcreateNewView(Color.GREEN, Color.MAGENTA);