I'm still stuck on this problem. I tried to solve it by making the whole activity dynamic. But still the button is positioned at top left. I can't see why
ok.layout(k.getLeft(), k.getTop(), k.getRight(),k.getBottom()); isn't repositioning the button, even if it shows the right Values on LogCat. I really need some help on that ! On 10 Feb., 14:35, Kritzli <pfister.ta...@googlemail.com> wrote: > Ok. Here's some more information about my App. > I'm going to create a keyboard app. Or rather an App where you can > define your own keyboard. Therefore I have two Activities A and B. > > Activity A: > Here I want to create a single key. This is currently realized by > configuring a button. > The buttons size can be customized with a progress bar. One for height > and one for width. Also some letters/text can be added. > Then, height, width and the text of the button is send via an Intent > to Activity B. > > Activity B: > On Activity B the current Button gets its properties out of the Intent > and via Gesture you can set it somewhere on the screen. > Afterwards the button get saved in an Arraylist. > Everytime I call Activity B the Arraylist is read and the buttons > should be shown on their position as before defined. > So the screen should be filled with buttons until the keyboard is > ready. > > Then I want to create the keyboard (but I have no idea how yet ;) ) > > But as mentioned before, after reading the Arraylist the buttons loose > their position. > > And here's the whole code of Activity B: > > package example.com.fpa; > > import java.util.ArrayList; > import java.util.Iterator; > > import android.app.Activity; > import android.content.Intent; > import android.gesture.Gesture; > import android.gesture.GestureLibraries; > import android.gesture.GestureLibrary; > import android.gesture.GestureOverlayView; > import android.gesture.Prediction; > import android.gesture.GestureOverlayView.OnGesturePerformedListener; > import android.os.Bundle; > import android.util.Log; > import android.view.View; > import android.view.View.OnClickListener; > import android.view.ViewGroup.LayoutParams; > import android.widget.Button; > import android.widget.RelativeLayout; > import android.widget.Toast; > > public class keyboard_view extends Activity implements > OnGesturePerformedListener { > > protected Button key_button; > protected GestureLibrary mLibrary; > // protected keys other_keys; > protected int position; > public static ArrayList<Button> keyList = new ArrayList<Button>(); > public Iterator iter; > public static RelativeLayout rel_layout; > > /** > * @param args > */ > public void onCreate(Bundle savedInstanceState) { > super.onCreate(savedInstanceState); > setContentView(R.layout.keyboard_view); > > final Intent intent = new Intent(this, fpa.class); > > rel_layout = new RelativeLayout(this); > > final Button back_button = (Button) > findViewById(R.id.back_button); > final Button accept_button = (Button) > findViewById(R.id.accept_button); > key_button = (Button) findViewById(R.id.key_button); > > mLibrary = GestureLibraries.fromRawResource(this, > R.raw.gestures); > if (!mLibrary.load()) { > finish(); > } > > GestureOverlayView gestures = (GestureOverlayView) > findViewById(R.id.gestures); > gestures.addOnGesturePerformedListener(this); > > key_button.setHeight(getIntent().getExtras().getInt("height")); > key_button.setWidth(getIntent().getExtras().getInt("width")); > > key_button.setText(getIntent().getExtras().getCharSequence("letter")); > > back_button.setOnClickListener(new OnClickListener(){ > public void onClick(View v){ > //Perform action on clicks > > intent.putExtra("height", > key_button.getHeight()); > intent.putExtra("width", > key_button.getWidth()); > startActivity(intent); > } > }); > > accept_button.setOnClickListener(new OnClickListener(){ > public void onClick(View v){ > //Perform action on clicks > keyList.add(key_button); > intent.putExtra("height", > key_button.getHeight()); > intent.putExtra("width", > key_button.getWidth()); > startActivity(intent); > } > }); > > if(keyList.isEmpty() == false){ > for (iter = keyList.iterator(); iter.hasNext();){ > > Button k = (Button) iter.next(); > Button ok = new Button(this); > > ok.setHeight(k.getHeight()); > Log.i("Button K", "Höhe: " + k.getHeight()); > Log.i("Button OK", "Höhe: " + ok.getHeight()); > > ok.setWidth(k.getWidth()); > Log.i("Button K", "Weite: " + k.getWidth()); > Log.i("Button OK", "Weite: " + ok.getWidth()); > ok.setText(k.getText()); > ok.layout(k.getLeft(), k.getTop(), > k.getRight(), > k.getBottom()); > Log.i("Button OK", "Links: " + ok.getLeft()); > Log.i("Button OK", "Oben: " + ok.getTop()); > Log.i("Button OK", "Rechts: " + > ok.getRight()); > Log.i("Button OK", "Unten: " + > ok.getBottom()); > ok.setVisibility(1); > > rel_layout.removeView(ok); > > rel_layout.addView(ok); > } > > } > > }//endOnCreate > > protected void onSaveInstanceState(Bundle outState) { > super.onSaveInstanceState(outState); > // outState.putStringArrayList("LISTE", keyList); // adding a > string in bundle > // Toast.makeText(this, "Activity state saved", > Toast.LENGTH_LONG).show(); > } > > public void onResume(){ > super.onResume(); > > if(keyList.isEmpty() == true || keyList == null) > Toast.makeText(keyboard_view.this, "leer", > Toast.LENGTH_SHORT).show(); > else > Toast.makeText(keyboard_view.this, "voll", > Toast.LENGTH_SHORT).show(); > > } > @Override > public void onGesturePerformed(GestureOverlayView overlay, Gesture > gesture) { > // TODO Auto-generated method stub > ArrayList<Prediction> predictions = > mLibrary.recognize(gesture); > int width = key_button.getWidth(); > int display_width = > getWindowManager().getDefaultDisplay().getWidth(); > int start_width = display_width - width; > > int height = key_button.getHeight(); > int display_height = > getWindowManager().getDefaultDisplay().getHeight(); > int start_height = display_height - 130 - height; > // position = key_button.getLocationInWindow(FOCUSED_STATE_SET); > > // We want at least one prediction > if (predictions.size() > 0) { > Prediction prediction = predictions.get(0); > // We want at least some confidence in the result > if (prediction.name.equals("add_key_left")) { > key_button.layout(10, 10, 10 + width, 10 + > height); > Toast.makeText(keyboard_view.this, > "Ausrichtung: " + > key_button.getLeft() + "Rechts: " + key_button.getRight() + "Oben: " + > key_button.getTop() + "Unten: " + key_button.getBottom(), > Toast.LENGTH_SHORT).show(); > } > if(prediction.name.equals("add_key_downleft")){ > key_button.layout(10, start_height, 10 + > width, start_height + > height); > Toast.makeText(keyboard_view.this, > "Ausrichtung: " + > key_button.getLeft() + "Rechts: " + key_button.getRight() + "Oben: " + > key_button.getTop() + "Unten: " + key_button.getBottom(), > Toast.LENGTH_SHORT).show(); > > } > > if(prediction.name.equals("add_key_right")){ > > key_button.layout(start_width, 10, > start_width + width , 10 + > height); > Toast.makeText(keyboard_view.this, > "Ausrichtung: " + > key_button.getLeft() + "Rechts: " + key_button.getRight() + "Oben: " + > key_button.getTop() + "Unten: " + key_button.getBottom(), > Toast.LENGTH_SHORT).show(); > > } > if(prediction.name.equals("add_key_downright")){ > key_button.layout(start_width, start_height, > start_width + width, > start_height + height); > Toast.makeText(keyboard_view.this, > "Ausrichtung: " + > key_button.getLeft() + "Rechts: " + key_button.getRight() + "Oben: " + > key_button.getTop() + "Unten: " + key_button.getBottom(), > Toast.LENGTH_SHORT).show(); > > } > > } > }//endGesturePerformed > > }//endClass > > Hope this helps ^^" > Any kind of help is appreciated ! > > On 8 Feb., 20:25, Kritzli <pfister.ta...@googlemail.com> wrote: > > > > You cannot pass a Button via an Intent. > > > You're right. I only pass the height, width and text of the button I > > customized in Activity A. > > > > Activity B cannot modify the UI of Activity A. Activity B cannot safely > > > reuse the widgets of Activity A. > > > I don't want to modify the UI of Activity A. Activity B has its own UI > > or rather Activity B's Ui is made of those buttons. Therefore I want > > to move and show the buttons on Activity B. > > > Maybe I schould post some more code for clarification ? > > > On 8 Feb., 14:14, "Mark Murphy" <mmur...@commonsware.com> wrote: > > > > > There are two Activities (Activity A and B). At Activity A I customize > > > > a button and pass it on Activity B via an intent. > > > > You cannot pass a Button via an Intent. > > > > > On Activity B I move > > > > the button somewhere on the screen. > > > > Activity B cannot modify the UI of Activity A. Activity B cannot safely > > > reuse the widgets of Activity A. > > > > > Any suggestion and hints how this could be solved would be > > > > appreciated ! > > > > Give Activity B its own widgets, independent of those from Activity A, > > > positioned where they are supposed to be from the outset. > > > > -- > > > Mark Murphy (a Commons Guy)http://commonsware.com > > > Android App Developer Books:http://commonsware.com/books.html -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en