[Q]GoogleMap as Overlay on SurfaceView - Java for Android App Development

hey guys,
I have a little problem with my app.
This is what my app does (should do):
I have a SurfaceView which shows the camera "preview".
On top of this surfaceview I want to display a map, so the user can see where he is. So I want sort of a minimap.
To display the fragment/GoogleMap object on top of the surface, I use the following main_activity.xml:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/SurfaceViewLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/ic_launcher" />
<fragment
android:id="@+id/Map"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
class="com.google.android.gms.maps.MapFragment" />
</RelativeLayout>
My problem is: The app shows the surface and the map, but I can only see the +/- Buttons of the map. The map is not visible. See attachments for a screenshot.
As you can see, the buttons are displayed, but not the map
Does anyone has an idea?
regards,
v1r0x

You prob either have the wrong api key, didnt declare in the manifest, or have god awful service haha.
95% chance it has to do with the api key though, so double check your have the v2 key, and have it in the right spots.
---------- Post added at 05:19 AM ---------- Previous post was at 05:16 AM ----------
You prob either have the wrong api key, didnt declare in the manifest, or have god awful service haha.
95% chance it has to do with the api key though, so double check your have the v2 key, and have it in the right spots.
EDIT: well maybe it could be a weird layout thing, so to check, take out the framelayout and run it. If the map pops up, its something else.

Oh sorry, I forgot to mention, that without the framelayout or if I define
Code:
android:layout_above="@+id/map
in the FrameLayout, I see the map. So, it's not an api key error.
What I don't understand is, that the buttons (+/- in the screenshot) pop up, but not the map
But thanks for your answer

Try setting a width and height for the fragment and maybe exchange their order in the layout. Something like 64dp. (Just for testing)
I think that one is drawn over the other so that you do not see the other one. The buttons are drawn on the top of everything.

nikwen said:
Try setting a width and height for the fragment and maybe exchange their order in the layout. Something like 64dp. (Just for testing)
Click to expand...
Click to collapse
The map is 200dp x 200dp
nikwen said:
The buttons are drawn on the top of everything.
Click to expand...
Click to collapse
Didn't know that. Thanks.

v1r0x said:
The map is 200dp x 200dp
Didn't know that. Thanks.
Click to expand...
Click to collapse
Have you tried changing their order?
The second view should be drawn behind the first one if nothing else is specified.

I thought the second view will be drawn on top of the first
Now it looks as it should
There are some new bugs, but I think they are related to the new layout.
Thank you, guys!

v1r0x said:
I thought the second view will be drawn on top of the first
Now it looks as it should
There are some new bugs, but I think they are related to the new layout.
Thank you, guys!
Click to expand...
Click to collapse
Great. :good:

Related

[Q] ScrollView, SetText and scrollTo

Hi,
Im just getting into Android development and picking up pace slowly. Getting confused how people are getting settings style menus with the appropriate colour Summary Line while adding icons for Stars and Checkboxes etc to highlight and tick.
Anyhoo, I have a TextViews inside a LinearLayout inside a ScrollView, seems to work OK. I use SetText to set the Text on the TextViews and I create everything at run time instead of through the XML files.
But the application I have is a polling type application and I need to repopulate the TextViews and redraw the ScrollView in the same position that the user scrolled to previously.
Im accutely aware of problems using ScrollTo after you've used SetText, so I found the following code:
Code:
sView.post(new Runnable() {
public void run() {
sView.scrollTo(0, iTop);
}
});
It works, but there's a screen flicker where it first draws the screen in its normal position then sets the scrollTo.
What is the best way of achieving this, or am I doing everything completely backwards and most normal people wouldn't have this kind of problem?
Thanks
Simon
It sounds more like you might want to consider using a listview instead. It was designed to contain several child views and scrolls and updates seamlessly.
Hi,
Thanks for the reply. Perhaps I am a bit too much of a beginner.
I seem to be favouring TableLayout so that I can display tabular data and have columns resize correctly and have the data presented OK.
I think that's why I went with updating everything at design time because I have a variable number of rows that can be added. IIUC, variable rows (in an XML file) I think can only be created using ListView, but of course a TableRow needs a TableLayout as a parent.
Here is the idea...
Code:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/TableLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"><TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:text="@+id/TextView01" android:paddingRight="5px" android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<TextView android:text="@+id/TextView02" android:id="@+id/TextView02" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</TableRow>
</TableLayout>
The code I have for TableRows is not dissimilar to, http://en.androidwiki.com/wiki/Dynamically_adding_rows_to_TableLayout
But of course using setText means I cannot then scrollTo
Duh.
First learning curve mastered.
You only need to add views to containers etc the first time you display the screen.
You can update the text in the views later on without affecting the screen position.
I like this.

[Q] addind a button to a secondary view is crashing my program

I am making a game that has a main.xml view (the default one that the game screen is made from. But I have a button for "help" that starts a new view which is just text explaining how to play the game. But I want to add a button to the help menu that will take the user back to the main game. Only problem is when I add a button to the xml file for it, it always crashes as soon as it is called. All the other buttons work fine in main.xml but I cant get the ones in the help.xml to work. Any suggestions?
The way that android's view hierarchy works is actually kind of complicated, and is one thing that I still at times struggle to grasp.
So when you press the help button, and help.xml is supposed to show up, it crashes?
yeah, heres my xml code:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
androidadding="10dip" >
<TextView
android:id="@+id/about_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text goes here" />
</ScrollView>
But it crashes if theres a button inside of it
are you using the new layout in the same Activity or a new one? If the same, try out making a new Activity class (remember to add it to manifest!), it might be a lot easier to then determine your problem if it's separate.
We could do with a logcat output of the crash to help determine what's wrong

[Q] Simple math, what am I missing?

Hi people!
I'm trying to learn how to develop android apps. I'm not trying to become a developer but for fun and learn this. So I go step by step.In the past I just have very basic visual basic and fortran experience...I don't know java lang. But while searching I found out that android is based on java. so I grabbed netbeans and jdk. and it was easy and understandable to do some basic math(with tutorials) with it, like + - * /
So I thought I'd give a try to appinventor. Ok easy enough.Done basic math. But I want to learn the code itself.
So I'm dealing with eclipse right know. I learned some basic stuff which you can not learn with appinventor.
But when it comes to basic math, I'm stuck!
Let me explain:
with appinventor it's easy to make this (pics are at the end of the post)
when I try to make this with eclicpe...I'm going nuts. I couldn't find any tutor.
Strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Lorem Ipsum</string>
<string name="input"></string>
<string name="butcel">Button</string>
<string name="result">result</string>
<string name="ClickHandler">ClickHandler</string>
</resources>
Click to expand...
Click to collapse
Forum does not let me enter my main.xml and main.java codes. so I atteched the pics and txt files below.
this gives me a "app has stopped unexpectedly" error
what I'm trying to do is
1)user inputs a number
2)clicks on a button (there will be several buttons in my app,this is just a test app)
3)application does some math with that number
ie. ((number*5)/2)
4)textView1 shows the result
Should it be simple like in appinventor or am I missing sth in my codes?
And I'm not sure but do I need to add a java math function or sth like that in my app to do simple math like this?
Any advice is appreciated.
Thanks in advance.
The first thing to check is your AndroidManifest.xml file. The Eclipse ADT plugin should create this file and include the main activity for your app automatically if it has been installed. However, an app will throw the error you are receiving if an activity is run that isn't listed in the manifest and it's very common(at least for me) to forget at first to add a newly created activity to the manifest. Below is an example of an AndroidManifest.xml file from the Hello, Android tutorial.
Code:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloandroid"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".HelloAndroid"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Hi there desisamay,
to be honest i did not really look and your code to try and find the error, but i did write you an example app you can expand or use to learn .
Attached to my post is the example app and my whole eclipse project directory of it.
The app has an edittext to input a number, a button to start the calculation x*2/5 and a textview to show the result.
I hope you enjoy it and if anything is still unclear, just ask!
when the activity starts you try to get the text of the edittext and convert it to string which is null since the edittext is empty at the beginning. You should get the input when you click the button (and maybe even check if the edittext is empty)
Dark3n said:
Hi there desisamay,
to be honest i did not really look and your code to try and find the error, but i did write you an example app you can expand or use to learn .
Attached to my post is the example app and my whole eclipse project directory of it.
The app has an edittext to input a number, a button to start the calculation x*2/5 and a textview to show the result.
I hope you enjoy it and if anything is still unclear, just ask!
Click to expand...
Click to collapse
Thank you very much! This was exactly what I was trying to do! I was trying to do this with onClickListener and defining values... But your lines are clear and understandable and now I know how to make definitions and basic math functions. I think there'd be more lines to write with onClickListener. But this way is simple and works like a charm. Thank you again.
Also I've added
android:inputType="numberDecimal|numberSigned"
Click to expand...
Click to collapse
to EditText in main.xml just to be sure the user inputs numbers only. maybe just "number" will do the same.
But one more question:
we write the result to output like this
output.setText("The result of " + mInput + " times two, divided by 5 is " + mOutput);
do we have to use some text in it? if I try just
output.setText(mOutput);
eclipse warns me
The method setText(CharSequence) in the type TextView is not applicable for the arguments (double)
Click to expand...
Click to collapse
and underlines setText with red. but we 've already defined mOutput before like double mOutput = (mInput*2/5);
@MongooseHelix
My AndroidManifest.xml was the same as you posted. Since I only have one action. Thanks.
@nemoc 23
I was trying to that. get the input when button clicked. Convert to string of course and do some math. But I couldn't.(now I can ) But you're right for checking the edittext field after clicking the button. I'm pretty sure if you click the button with an empty edittext area, app will give an error.(i tried and it did)
When writing my little app I'm planning to add this and warn the user with a toast text.
output.setText( mOutput.toString() );

Loading Framgents up at App Start..

Hey Guys -
This is probably answered somewhere, but for some reason search isn't working at the moment.
So, first, keep in mind that I'm NOT an experienced developer - I have ONE app on the Play Store, and I learned both Java and Android through trial and error and more Google/DuckDuckGo searches than *they* are probably even aware of. When I first released my app, v2.3 or some such was the latest out. :laugh:
So now I'm working on bringing it into the new generation, and playing with fragments.
I've seen two main approaches with them - the first seems to be creating the fragments on the fly in code, as needed. The second seems to be adding them to your main layout (which creates them at app startup).
I decided to go with option #2 - for a couple reasons. (First, it was easier for me to get started by putting them in the XML layout, and because I had some problems trying to get the code to work. Second, one of the fragments uses the Google Maps Fragment, which apparently causes some issues adding/removing the fragments programmatically.(which was causing the errors just mentioned. Third, using the Location service, one of my fragments can read the GPS status from the other, without having to start the service up, wait for a location, and then shut it down.)
And so far, loading the fragments this way seems to work well. Only have one 'glitch' I'm wondering if I'm stuck with, or can work around -
When the app loads, I get the main activity layout, and the screen jumbles all around as the three or four fragments are loaded. Is it possible to somehow hide the messy UI display as fragments are loaded? If I create a splash activity, the fragments don't get loaded until the main activity layout is shown anyways, so that doesn't seem to help the problem any.
Any thoughts are welcome!
-Mike.,
coyttl said:
Hey Guys -
This is probably answered somewhere, but for some reason search isn't working at the moment.
So, first, keep in mind that I'm NOT an experienced developer - I have ONE app on the Play Store, and I learned both Java and Android through trial and error and more Google/DuckDuckGo searches than *they* are probably even aware of. When I first released my app, v2.3 or some such was the latest out. :laugh:
So now I'm working on bringing it into the new generation, and playing with fragments.
I've seen two main approaches with them - the first seems to be creating the fragments on the fly in code, as needed. The second seems to be adding them to your main layout (which creates them at app startup).
I decided to go with option #2 - for a couple reasons. (First, it was easier for me to get started by putting them in the XML layout, and because I had some problems trying to get the code to work. Second, one of the fragments uses the Google Maps Fragment, which apparently causes some issues adding/removing the fragments programmatically.(which was causing the errors just mentioned. Third, using the Location service, one of my fragments can read the GPS status from the other, without having to start the service up, wait for a location, and then shut it down.)
And so far, loading the fragments this way seems to work well. Only have one 'glitch' I'm wondering if I'm stuck with, or can work around -
When the app loads, I get the main activity layout, and the screen jumbles all around as the three or four fragments are loaded. Is it possible to somehow hide the messy UI display as fragments are loaded? If I create a splash activity, the fragments don't get loaded until the main activity layout is shown anyways, so that doesn't seem to help the problem any.
Any thoughts are welcome!
-Mike.,
Click to expand...
Click to collapse
what do you mean with "jumbles "? Loadinganimation? If not, use LoaderManager.LoaderCallbacks
Could you please post your layout file? The one you put the <fragment> tags into.
mynote said:
what do you mean with "jumbles "? Loadinganimation? If not, use LoaderManager.LoaderCallbacks
Click to expand...
Click to collapse
More like you can see each of the fragments load, in order, overlaying each other (especially in cases where I don't specifically set the background, leaving it transaprent, I guess..) In code, then as the first 'fragment' is selected, my code hides the unused one, 'cleaning up' the display. I can't grab a screenshot, since it happens in under half a second.
nikwen said:
Could you please post your layout file? The one you put the <fragment> tags into.
Click to expand...
Click to collapse
Oh, sure -
Code:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame">
<fragment
android:id="@+id/fragment_map"
android:name="com.tsqmadness.bmmaps.views.MapPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_mapscreen -->
</fragment>
<fragment
android:id="@+id/fragment_stations"
android:name="com.tsqmadness.bmmaps.views.StationsPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_stations -->
</fragment>
<fragment
android:id="@+id/fragment_sheet"
android:name="com.tsqmadness.bmmaps.views.DatasheetPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_mapscreen -->
</fragment>
</FrameLayout>
I could go back to creating them all in code, but.. before I do that was wondering if there was anything I overlooked.
Thanks!
-Mike.
coyttl said:
More like you can see each of the fragments load, in order, overlaying each other (especially in cases where I don't specifically set the background, leaving it transaprent, I guess..) In code, then as the first 'fragment' is selected, my code hides the unused one, 'cleaning up' the display. I can't grab a screenshot, since it happens in under half a second.
Oh, sure -
Code:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame">
<fragment
android:id="@+id/fragment_map"
android:name="com.tsqmadness.bmmaps.views.MapPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_mapscreen -->
</fragment>
<fragment
android:id="@+id/fragment_stations"
android:name="com.tsqmadness.bmmaps.views.StationsPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_stations -->
</fragment>
<fragment
android:id="@+id/fragment_sheet"
android:name="com.tsqmadness.bmmaps.views.DatasheetPageFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" >
<!-- Preview: [email protected]/fragment_mapscreen -->
</fragment>
</FrameLayout>
I could go back to creating them all in code, but.. before I do that was wondering if there was anything I overlooked.
Thanks!
-Mike.
Click to expand...
Click to collapse
Ah, thanks.
So you want one Fragment being at the front and all others behind it?
Then to hide them all during loading, you could put another View to the top (with android:width and height = "fill_parent"). As soon as all fragments have loaded, you can remove it.
Does that do what you want?
nikwen said:
Ah, thanks.
So you want one Fragment being at the front and all others behind it?
Then to hide them all during loading, you could put another View to the top (with android:width and height = "fill_parent"). As soon as all fragments have loaded, you can remove it.
Does that do what you want?
Click to expand...
Click to collapse
i prefer (this is what i do) replacing it after everything has been loaded. Means, use a framelayout or whatever and just replace it with the fragments, ist not that hard.
i can Show you an example if you want to
nikwen said:
Ah, thanks.
So you want one Fragment being at the front and all others behind it?
Then to hide them all during loading, you could put another View to the top (with android:width and height = "fill_parent"). As soon as all fragments have loaded, you can remove it.
Does that do what you want?
Click to expand...
Click to collapse
I'll give that a try! Essentially, I just want to hide all the apparent 'loading' of widgets until everything IS loaded, to clean up the launch process. (Obviously, this action does NOT happen if the app is in the background and brought forward - only on fresh launches - i.e. After being killed, or phone reboot.)
I hadn't thought of creating a fourth view in front of everything to hide them - I will try that. I don't see why it wouldn't work. I'll let you know tomorrow!
mynote said:
i prefer (this is what i do) replacing it after everything has been loaded. Means, use a framelayout or whatever and just replace it with the fragments, ist not that hard.
i can Show you an example if you want to
Click to expand...
Click to collapse
I wouldn't mind seeing some code, either. (Since I 'taught myself', I really do enjoy seeing other ways - usually better and quicker - at doing things. :laugh
Thanks guys -
Mike.
http://www.vogella.com/articles/AndroidFragments/article.html
scroll down, there is an example how to replace placeholder with fragments. you can receive broadcasts when the Fragment is done and replace it then this way
---------- Post added at 09:44 PM ---------- Previous post was at 09:43 PM ----------
http://www.vogella.com/articles/AndroidFragments/article.html
scroll down, there is an example how to replace placeholder with fragments. you can receive broadcasts when the Fragment is done and replace it then this way
mynote said:
http://www.vogella.com/articles/AndroidFragments/article.html
scroll down, there is an example how to replace placeholder with fragments. you can receive broadcasts when the Fragment is done and replace it then this way
---------- Post added at 09:44 PM ---------- Previous post was at 09:43 PM ----------
http://www.vogella.com/articles/AndroidFragments/article.html
scroll down, there is an example how to replace placeholder with fragments. you can receive broadcasts when the Fragment is done and replace it then this way
Click to expand...
Click to collapse
I just saw these exercises: http://www.vogella.com/articles/AndroidFragments/article.html#tutorial_dyanmicfragments
Did I miss anything?
nikwen said:
I just saw these exercises: http://www.vogella.com/articles/AndroidFragments/article.html#tutorial_dyanmicfragments
Did I miss anything?
Click to expand...
Click to collapse
No. That's true. You just have to use some way to get informed when the cursorloader is finished.
This should be that hard. Use a "Harcoded" Loading layout instead of Fragment and as soon as you get a notify (broadcastreceiver, fragmentmanager, whatever) then you "visible" replace the Fragment
mynote said:
No. That's true. You just have to use some way to get informed when the cursorloader is finished.
This should be that hard. Use a "Harcoded" Loading layout instead of Fragment and as soon as you get a notify (broadcastreceiver, fragmentmanager, whatever) then you "visible" replace the Fragment
Click to expand...
Click to collapse
If I ever need this, I'll be able to do that. Just wondering where the code was. :laugh:
Okay, so you guys lost me going back and forth in the last few messages there. (Not your fault, again, remember, I taught myself and am slow. )
However, an update on some things I tried:
Adding a view to overlay the other fragments does NOT work, unfortunately:
If added in the layout before the fragments, the view is created first, but then is underneath the fragments, defeating the purpose, because of Z-Order.
If the layout view is AFTER the fragments, it's now on top of the other fragments, BUT, because the other fragments are loaded first, you still see the stacked and loading views of the fragments before the final overlay view pops into the window.
My next thought was to mark the containing views IN each fragment's layout set to android:visibility="None". This didn't work either, as I had to set them Visible before using the FragmentManager.beginTransation() to enable/disable the fragments. Setting them all to 'visible' cause the loading animations to not appear, but all three fragments end up visible for a split second before the Transaction hid/showed the right fragments.
I looked at - am still looking at - that link with the code, but I think because one of my fragments HAS a fragment IN it (sub Fragment?) it will cause the same problems I ran into at the start of the project when I tried to create the fragments programatically.
I have one more little trick to try with the visibility of the views in the fragments, before I jump back to getting it all done up in code to avoid the ugliness.
Thanks guys -
Mike
Hi everyone! I'm new in this forum but I have to admit that I have read it a couple of times to see great stuff!
I read this thread because I had the same question. The answers here are the first thing in mind when I had the problem. As I searched the web, I found a library called Progress Fragment by Evgeny Shishkin.
https:/ /github.com/johnkil/Android-ProgressFragment (I'm new so I can't post links for now, so you can copy/paste it )
One of the main features is that is compatible with devices using Android 1.6 and up!
It's really easy to use!
I hope this helps someone.
Guys -
Thanks for your help.
After working around, here's what I ended up with -
I can't create and attach (.replace) the fragments programatically, since one of the fragments has a MapFragment inside of it. (NOT a MapSupportFragment). This causes the .replace to need some overriding to handle a 'sub-fragment'.
Seeing as I found a good way to handle it - I decided not to override the .replace or the fragment manager. Instead, my main activity (posted earlier in the thread), I made all three fragments visibility:gone. This allows the main activity to launch to a blank (or set background) screen briefly before loading up the first fragment and hiding the others.
When I call my fragmentmanager() to show/hide the fragments, I simply set the visibility to 'view' at the same time. Seems kinda clunky, but it works well.
Thanks!
-Mike.

Noob layout issue - probably VERY EASY!!

I'm essentially trying to create a MadLibs app for my kids. I'll type in the text of the books they already have and they can play with it in the car. But I'm a noob and I haven't done much else other than the first few simple apps in tutorials - my brain got tired trying to figure out sqlite stuff, so this all went on the backburner and now here I am again giving it another effort.
So I was thinking something ridiculously simple, like just having a textview string of the first part of a sentence, then an edittext with a hint set for the type of word to fill in, followed by the rest of the sentence in another textview string. Lather, rinse, repeat. Easy, right?
I can't seem to figure out how to get the objects to flow properly in the layout... First problem is that the edittext is gigantic compared to the textview. I could probably figure that one out easy enough, but my second problem prevents me from actually seeing the effects of my changes, and that problem is that the text doesn't flow onto the next line.
I've tried linearlayout and relativelayout, but I'm turning here for some guidance before I waste countless hours. Should I just build each paragraph (textview) as a single string comprised of other strings and edittext variables?
Any help would be great appreciated. And remember: go easy on me.
Here's my current activity_main.xml:
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/textBody01"
android:weight="1" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/hint_adjective"
android:weight="1" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/textBody02"
android:weight="1"/>
</LinearLayout>
etnpnys said:
I'm essentially trying to create a MadLibs app for my kids. I'll type in the text of the books they already have and they can play with it in the car. But I'm a noob and I haven't done much else other than the first few simple apps in tutorials - my brain got tired trying to figure out sqlite stuff, so this all went on the backburner and now here I am again giving it another effort.
Click to expand...
Click to collapse
Could you post a quick picture (just a rough one in paint or something) showing the desired layout ?
Absolutely. I'll mock one up and get it on here shortly.
Sent from my SPH-L710 using Tapatalk
PicomatStudios said:
Could you post a quick picture (just a rough one in paint or something) showing the desired layout ?
Click to expand...
Click to collapse
Here's a little bit of how I'm thinking this should work out pretty easily. In the end, I would like to have the filled-in words in bold red text and the rest of the body paragraphs as regular black text, and I would like to make the background black to hide the body of text. I would then have a button that calls a function to change the background to white to make the body text visible "onclick" -- or maybe toggle between black/white/whatever.
The first hurdle is right here with the layout. I mean, this is REALLY simple, right?
View attachment 2380717
etnpnys said:
Here's a little bit of how I'm thinking this should work out pretty easily. In the end, I would like to have the filled-in words in bold red text and the rest of the body paragraphs as regular black text, and I would like to make the background black to hide the body of text. I would then have a button that calls a function to change the background to white to make the body text visible "onclick" -- or maybe toggle between black/white/whatever.
The first hurdle is right here with the layout. I mean, this is REALLY simple, right?
View attachment 2380717
Click to expand...
Click to collapse
Maybe not that simple
As I understand it you want the text to flow continuously left-to-right, top-to-bottom, a bit like floating CSS layouts ?
That is you might want it to do...
Mary had a [edit text] lamb. Its
fleece was white as snow.
Where that's 2 TextViews with an EditText between them ?
You will struggle to do that on Android, since there is not built in concept of 'flow' as you may be imagining.
The closest you will get is a RelativeLayout but you'll have to work hard to line the views up correctly.
You could try something like this, or maybe this. The second one links here where there is somebody's FlowLayout code towards the end of the page. I haven't tried it but it looks close to what you need at first glance. The concept appears to be a ViewGroup which calculates where its children should be and positions them accordingly.
You get my ideas exactly. I'll look into those! Much appreciated!
Sent from my SPH-L710 using Tapatalk
Just to button this up, I wanted to chime in to let everybody know which direction I went.
Basically, I have a vertical linear layout comprised of:
several editText fields for user input. @hint points to strings that indicate what kind of word (noun, adjective, etc) needs to be filled in.
a "Create" button
a "Clear" button
a textView
Behind the scenes, I set a series of "sentenceFragment" variables that contain the body text. Those all end with a "[" and start with a "]" so that the filled-in words can be easily seen once the story is built. Users fill in the editText fields and click the "Create" button. When clicked, I used getText on each of the editTexts to store each as a string, then a "paragraph" variable is built from concatenating all of the sentenceFragments + editTexts, then I used setText to the textView to display the entire story below.
The "Clear" button then uses setText on the textView and the editTexts to blank them out.
So, in the end, the user is presented with stuff like:
Sometimes you just want to get a [green] car. In your search, you find several [bugs] on the seat.
Thanx for you help, everybody! Now I'm looking into putting a spinner at the top to let the user select different stories... Anybody wanna point me in the right direction there?

Categories

Resources