Android : Save Scroll Position - When Activity Returns?

Jul 8, 2009

How can I save and load the scroll position of a listview that is destroyed/hidden/paused.

Android : Save Scroll Position - When Activity Returns?


Android : Get Scroll Position In A List Activity?

Mar 23, 2009

I'm trying to get the scroll position on a ListActivity. Here is what I'm trying to do: I have a list activity that is populated from an XML file. Another thread downloads all pictures so the user can see the list while the thread is still downloading the files.

What I'm trying to do is when the thread finishes getting all pics it reads the listview scroll position, refresh the listview and scroll to that position again.

ListView main = getListView(); <-- not sure if I'm really getting the ListView this way. int scY = main.getScrollY(); Log.d("Scroll", scY + " "); <--- this is printing zero even when at the moment I run this I already scrolled the list. setListAdapter(listadapter); main.scrollTo(0, scY);

View 10 Replies View Related

Android :: Set Scroll Position Of ListView?

Jul 30, 2010

I have a listview displaying my data.Ok. I want to set the scroll position in a position of my choice, but I just cant do it. I used :

myListView.setSelection( anyPosition ); myListView.setSelected(true); and has not worked. I also tried : myListView.scrollTo(0, PositionY); and myListView.scroolBy(0, PositionY);

and there's a strange behavior, this two methods doesn't put the scrool in the "PositionY", it made the "PositionY" be the first position in the list, cutting everything that exist before.

View 3 Replies View Related

Android :: Scroll To Position In ListView

Jun 10, 2010

I have a long listView that the user scrolls around and then returns to the previous menu. What I want is that when the user opens this list View again the list to be scrolled to where the it was previously left. Any ideas on how this can be achieved ?

View 2 Replies View Related

Android : Can I Scroll Position In BaseAdapter?

Mar 9, 2010

I am using BaseAdapter for displaying the list. This list is fetched by calling a Web Service. At a time only 20 records are returned. Now, when the scroll of the BaseAdapter reaches the last record then the application should fetch more records from the server.

So, what I want to know is how to know the scroll position or some other way of knowing that the last record has been reached so fetch more records from the server. I don't want to implement the next and previous button on the screen.and so am trying to implement it in this manner.

View 2 Replies View Related

Android : Way To Get Scroll Position Of A WebView

Mar 16, 2010

I'm new to Android. I would like to simply know where on a page the user has scrolled. When a certain point on the web page appears at the bottom of the screen, I want to trigger an event. But this code causes an exception. I know that WebView inherits getScrollY() from View. Am I not implementing it correctly?

View 1 Replies View Related

Android :: Maintaining Scroll Position Of ListView

Apr 7, 2009

In my app, my main class extends ListActivity and calls a fillData() function to reload the list whenever changes are made. I'm still getting the hang of this, so I borrowed that concept from the Android Notepadv1-Notepadv3 tutorials. Everything works great, however whenever I need to change the list (remove an item, re-sort it, edit an item), the ListView refreshes and loses its scroll position. The scroll position is reset to the top after each fillData() call.

It appears to be resetting the scroll position to the top because I'm using setListAdapter() each time in fillData(), setting it to a new SimpleCursorAdapter. How can I get the list to "update in place", where the scroll position is seamlessly maintained to the user? I tried heading down the "items.changeCursor(cursor)" path, but that didn't seam to do much for me.......................

View 2 Replies View Related

General :: Scroll Position In Android Market?

Aug 11, 2012

Whenever you search for an app in the Android Market, click on one and realize its not the one you wanted, you click back but then the scroll position gets reset and you're at the top of the search results. This is even more particularly annoying whenever you look through your previously installed apps on the Android Market and try to re-install some. Its not fun having to scroll 5 pages each time.

View 2 Replies View Related

Android :: Activity Parent - Created Activity Returns A Nul ?

Apr 7, 2010

Can someone tell if why when starting an activity with startActivity(intent) , calling getParent() in onCreate() of the new created activity returns a nul ?

Also how could I obtain the parent of an activity created in such a way ? Can a reference of the activity below the current activity in the activity stack be obtained ?

View 2 Replies View Related

Android : How To Get Scroll Position In A GridView / GetScrollY Always Return 0

Jul 24, 2010

I have a GridView in my activity, and I want to save current scroll position while user goes to another place and restore it while user comes back. I try to use GridView.getScrollY and GridView.scrollTo methods, but getScrollY method always return 0 instead of right scroll position. Am I using this method in a wrong way?

Could anyone who can teach me how to retrieve the scroll position in a GridView?

I searched the Internet found that someone said we can use getSelectedItemPosition and setSelection methods, but this requires user to select at least one item, how about the case that no items is selected?

View 2 Replies View Related

Android : First And Last Position Of Textview From Horizontal Scroll View

Aug 26, 2010

I have a horizontal scrollview with text fields,here i need to get the first and last position of textview when i scrolled it,how can i get the position of textview when i scrolled.and also need to know how to set color for text when i clicked the particular text from this. sample code....

View 1 Replies View Related

Android : Detect Scroll Position Inside A ListView?

Oct 10, 2009

I'm building a chat room application where new events are being polled for every X seconds. Every time that happens, this code updates the RoomAdapter (a custom subclass of ArrayAdapter) with the new data and scrolls it to the bottom:

RoomAdapter adapter = (RoomAdapter) getListAdapter();
for (int i=0; i<newEvents.size(); i++)
adapter.add(newEvents.get(i));
getListView().setSelection(events.size()-1);

This is fine, except that if the user is scrolling up to glance at the room's history, it's going to jump her down to the bottom when the poll happens. What I'd like to do is have it so that if the user is already at the bottom of the list, it stays there after a poll for new events. If the user's intentionally scrolled upwards, I'd like the user not to be disturbed.

How do I detect when I'm already scrolled to the bottom of a ListView?

Note: I can't do getListView().getSelectedItemPosition(), because as the docs note, calling setSelection when in touch mode does not actually select the item, just scrolls to it.

View 1 Replies View Related

Android : Setup ListView Scroll Position Nicely In Droid?

Jul 22, 2010

I am aware of setSelection(), setSelectionFromTop(), and setSelectionAfterHeaderView(), but none of them seems to do what I want.

Given an item in the list, I want to scroll so that it is in view. If the item is above the visible window of the list, I want to scroll until the item is the first visible item in the list; if the item is below the visible window, I want it to scroll up until it is the last visible item in the list. If the item is already visible, I don't want any scrolling to occur. How do I go about this?

View 1 Replies View Related

Android :: Using Phone Camera Via Intent / Activity Never Returns?

Oct 18, 2010

I'm using the phone's camera in an Android app to take a photo. I'm using Intents to use the built-in camera application.It works fine and the camera is brought up. I can take a photo and the phone presents me with three options: Cancel, Retake, OK. The first two work, pressing cancel returns the user to the app, but pressing OK and nothing happens. Apparently onActivityResult isn't being called, and the camera just stays on the screen. Nothing in the debugger either.Running the app on a Nexus One with Android 2.2.1. Same problem on the emulator running Android 2.0.

View 1 Replies View Related

Android :: Position Of Child View In Horizontal Scroll View

May 18, 2010

I have a HorizontalScrollView with a series of CompoundButtons. I want to find the (x,y) for a given child view. I have tried using:

getLocationOnScreen()
getLocalVisibleRect()
getChildVisibleRect()
like this:
View tmpView = this.findViewById(viewId);
Rect hitRect = new Rect();
tmpView.getLocalVisibleRect(hitRect);
the hitRect is always 0,0 - 0,0.

I need the x,y mainly to scroll to a particular child view. Any help is greatly appreciated.

View 1 Replies View Related

HTC EVO 4G :: Scroll Over "Favorites" Widget / Snap Change Position

Jul 9, 2010

I have the Favorites widget on one of my desktop screens. Every time I scroll over to it, The pictures change position, and then snap back to the original order. Has anyone else noticed this, or have an idea why it is doing this? It's annoying.

View 1 Replies View Related

Android : Position An Overlaying Activity At Bottom?

Apr 8, 2010

I have an activity that comes up over another activity. I'd like to position the overlying activity at the bottom of the screen without using an absolute layout, just like the soft keyboard.

I can't figure out if this can be done in an XML layout, and if so, where does it go?

I have a theme created, and the manifest is set to use it (this works). But overlaying activity is always positioned in the center of the screen. This is what I have. code...

How do I get the layout to show up aligned to the bottom for the overlaying window?

View 2 Replies View Related

Android :: Absolutely Position Elements Outside An Activity On Droid?

Apr 7, 2010

Is there a way to absolutely position an UI element on Android so that it is located outside an Activity? For example: can you create a fullscreen ImageView simply by moving/resizing an ImageView inside an existing regular Activity instead of creating a new fullscreen activity?

View 1 Replies View Related

Android :: How To Scroll To Bottom On Activity Startup?

Jul 22, 2010

I am displaying some data in a ScrollView. On activity startup (method onCreate) I fill the ScrollView with data and want to scroll to the bottom. I tried to use:
getScrollView().fullScroll(ScrollView.FOCUS_DOWN).
This works when I make it as an action on button click but it doesn't work in the onCreate method. Is there any way how to scroll the ScrollView to the bottom on activity startup? That means the view is already scrolled to the bottom when first time displayed.

View 1 Replies View Related

Android :: FindViewByID Returns Null - Works Different Than Activity.findViewById

Jul 16, 2010

first of all: yes, I read all the other threads on this topic. And not only those from this site... (you see, i'm a little frustrated) Most of them come with the advice to use "android:id" instead of just "id" in the xml file. I did. From others, i learned, that View.findViewById works different than Activity.findViewById. I handled that, too.

in my location_layout.xml i use

<FrameLayout .... >
<some.package.MyCustomView ... />

<LinearLayout ... >
<TextView ...
android:id="@+id/txtLat" />.................

View 1 Replies View Related

HTC EVO 4G :: Screen Rotation - Delay When Switch From Horizontal Position To Vertical Position

Sep 29, 2010

On my htc i was looking through display, i see g sensor calibration and i perform this calibration and after i do so the screen seems to have a delay when switch from the horizontal position to the vertical position. its weird because when i switch to the phone horizontally it switch normally and responds fast. but when i switch back to vertically it takes almost 7 seconds to actually switch back, sometimes it switch within 2 or 3 secs but never as quick as switching horizontally.

MQuote:

Originally Posted by Rigmaster

Make sure you have the latest updates, which impact speed on the device in some unpredictable and unexpected ways. During system updates, your Evo may reboot and will take the g-sensor changes as last calibrated.

If you're already updated, shut down and repower (soft reboot) should do the trick. I actually updated my phone and after it started to do this. I restarted the phone plenty of times i even took the battery out for 30 seconds. It only does it when im texting on the browser, basically everything but the camera. He camera screen rotation is perfect. I even rooted the phone but i havent figured out how to use the root to fix the problem. Should i do a firmware update? Because i just did the htc software update.

View 1 Replies View Related

Android :: How To Save State Of An Activity On An ActivityUnitTestCase

Jan 22, 2009

In an ActivityUnitTestCase I'm trying to do:

CODE:...............

But on the save state call I get this trace:

CODE:.................................

Going through the ApplicationContext source code I've found this (http://tinyurl.com/d8qsyc):

CODE:...................

It seems the problem is that the activity token is not set. But here I'm puzzled, I don't know where to go next. Any ideas on how to fix it or workaround it are appreciated. I want to test that my application is saving its state correctly.

View 3 Replies View Related

Android :: Correct Way To Save State Of An Activity?

Jul 1, 2010

I have an Activity, which contains a bunch of check boxes and a submit button.

When the submit button is clicked, the activity will exit (finish() will be called). Before the activity exits, I want to save the states of the check boxes in the activity, so when the activity starts again, the check boxes can stay in their previous states. What's the correct way to save these states? Should I use SharedPreference.

View 1 Replies View Related

Android :: Scroll Down - Text Area Get Focus Scroll Little Bit And Also Display Bottom Buttons

Apr 19, 2010

I have text area and and down to that "ok" and "cancel" button. when i click on text area keyboard appear and focus on the text area and buttons get hide behind the keyboard.

I want when text area get focus scroll a little bit and also display the bottom buttons while text area id selected.

View 2 Replies View Related

Android :: Save / Cancel Button Never Appear In Call Activity

Sep 5, 2009

I'm trying to show a simple layout where I can call this activity and fill in some values, then hit the save or cancel button. Unfortunately the save and cancel buttons never appear. Can someone help please?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/ android" android:layout_width="fill_parent" android:layout_height="wrap_content"
android:paddingLeft="8dp" android:paddingRight="8dp" android:paddingTop="8dp">
<TableLayout android:orientation="horizontal" android:layout_width="fill_parent"
android:layout_height="wrap_content"> <TableRow>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/band" android:textStyle="bold" android:textSize="16px" android:paddingRight="5dp" />
<EditText android:id="@+id/band" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/>
</TableRow> <TableRow>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/members" android:textStyle="bold" android:textSize="16px" android:paddingRight="5dp" />
<EditText android:id="@+id/members" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"/>
</TableRow> </TableLayout>
<TableLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent">
<TableRow> <Button android:id="@+id/save" android:text="@string/save" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" />
<Button android:id="@+id/cancel" android:text="@string/cancel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" />
</TableRow> </TableLayout> </LinearLayout>

View 7 Replies View Related

Android :: Safely Save Everything Before A Kill The Activity Task

Feb 17, 2010

When the user press the home key, the onPause method is called. At this time, the application is supposed to save its state so it can be properly recovered later.

However, and if the state is taking too much time? For example, issuing a closeAllNetworkConnections that was waiting a feedback from the server, or just if the amount of information we're writting to disk is a lot of info... what would happen?

In my tests, i'm getting from 300-500 ms of time until the process is killed.

Is there a safer place to put a "save everything and quit" code so that it can safely save everything before a "kill the activity" task is issued?

View 3 Replies View Related

Android :: Save Configuration Value As Integer In Preference Activity?

Sep 16, 2010

Is there a way how I can tell the Preference Activity that value should be saved as integer? So far my all values are saved as strings... I can limit input to integers via XML easy:

<EditTextPreference android:key="SomeKey" android:numeric="integer" />

but it is still saved as string and later trying to getInt("SomeKey") on preferences object I always get java.lang.ClassCastException: java.lang.String.

Is there a way that EditTextPreference value would be saved not as string? Or maybe I should use some other type of Preference for numeric input?

View 7 Replies View Related

Android :: Phone Won't Save Current State Of An Activity / Way To Do

Nov 17, 2010

I am trying to save some values in the onSaveInstanceState(Bundle) method of my activty by following the example here: How do I save an Android application's state?

But it doesnt seem to load it from the Oncreate(). the bundle object is always null but whenever i call another activity, it does indeed go into the onSaveInstanceState method to save my values.

Now i read that question i just posted and someone noted how they could not get it to work in an emulator? unfortunately that is all im working on. On an emulator and cant test the app on the device as i have no device available to me right now And the web services i am interacting with are in a local VM on my work machine that cannot be accesses remotely at the moment.

My question is, is it true that saved bundles dont work on emulators? I also noticed how when i do dismiss or bring up a new activity , the activity calles onPause and then onStop. when i bring back the same activty, it goes straight to onCreate?

now according to the docs here http://developer.android.com/guide/topics/fundamentals.html#actlife That is correct in terms of what the lifecycle diagram shows but if you read below that diagram on the onStop() section it says the next step it goes into is either onRestart() or onDestroy()? no mention of onCreate? Type on the docs?

Anyways here is my onSaveInstanceState() and onCreate() both in the same activity: code...

View 1 Replies View Related

Android :: Why Does TextView.setText Cause Enclosing Scroll View To Scroll?

Jun 24, 2010

I've got this odd problem which is happening on 1.6, 2.2, and a MyTouch 3G Slide (which is API #7, and listed as "2.1-Update1" in the Android Device Chooser). If anyone can explain what I'm doing wrong & how to fix it (or possibly confirm that this is an Android bug)The basic idea for my app is to make a stopwatch-sort of thing, in that the user can tap a button to start a timer, then tap it again to stop (pause) the timer; further taps alternate between resuming the timer and pausing the timer.I've got a top-level ScrollView which contains a RelativelLayout, which contains a bunch of widgets. The first widget is a HUGE button (so that it's easy to press), which pushes all my other widgets below the bottom of the screen. This is intentional, as I want to rely on the ScrollView (and an on-screen reminder to the user) to make the rest of the input options available.I've got a simple state-machine type setup, where mState is the current mode (STATE_ TIMER_ NOT_ STARTED before the user presses any buttons, RUNNING after the first press, and then PAUSED after the second, back to RUNNING after the third, etc, etc).

All this works great EXCEPT that when the timer is running, and the user presses the start/stop/resume button again, the ScrollView will scroll down a ways. I am NOT issuing this command (I don't even have a reference to ScrollView object), and I'm not sure why it's doing this.

REPRO:Compile + run the below samples. When the app starts, press the 'Start Timing' button. Use your thumb (or the mouse) to touch-drag the screen upwards (so you can see the RatingBar), then drag it back downwards (so the button is again completely on-screen). Tap the button (which now reads 'PauseTiming') again, and it'll jump down a bit. It should NOT be jumping/scrolling down, since there's no statement (that I can see) that tells it to scroll down. As near as I can tell, it's the setText that causes the scrolling ( when I comment those lines out, no scrolling occurs).WHAT I'M ASKING FOR:if I'm doing something dumb & you could point out what it is, I'd really appreciate it! I wonder if 'touch mode' might have something to do with this, since it does NOT appear to happen (in the emulator) when I use the mouse's scroll wheel to move the panel upwards (i.e.,instead of the simulated finger-dragging). I can't find a whole lot on touch-mode, and nothing specific on focus/selection in touch mode within a ScrollView if you can confirm that this error occurs for you too, that would be ok, too (since misery loves company.AHEM I mean, since it might help confirm that it's not just me MyTestApp.java package bug.android.scrollview;
import android.app.Activity;
import android.os.Bundle;
import android.text.format.Time;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
public class MyTestApp extends Activity {
public final static int STATE_TIMER_NOT_STARTED = 1;
public final static int STATE_TIMER_RUNNING = 2;
public final static int STATE_TIMER_PAUSED = 3;
private int mState;
Time t = new Time();
private Time data = new Time();
private Button btnStartStopResume;
private TextView lblSpacer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.new_time_entry);
btnStartStopResume = (Button) findViewById(R.id.btnStartStopResume);
// Set the button's size so that the other info will also be visible
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE))
.getDefaultDisplay();
// This is such a hack, but the windowScroller doesn't appear to
// have a height at this point in the lifecycle (nor in 'onResume' :( )
btnStartStopResume.setHeight(display.getHeight() - 200);
lblSpacer = (TextView) findViewById(R.id.lblSpacer);
reset();
} public void doStartStopResume(View v) {
if (mState == MyTestApp.STATE_TIMER_NOT_STARTED) {
mState = MyTestApp.STATE_TIMER_RUNNING;
data.setToNow();
} else if (mState == MyTestApp.STATE_TIMER_RUNNING) {
mState = MyTestApp.STATE_TIMER_PAUSED;
String s = getString(R.string.add_scroll_down_to_add);
lblSpacer.setText(s);
} else if (mState == MyTestApp.STATE_TIMER_PAUSED) {
mState = MyTestApp.STATE_TIMER_RUNNING;
public void doReset(View v) {
}public void doNewRunClick(View v) {
public void doAddTiming(View v) {
public void reset() {
mState = STATE_TIMER_NOT_STARTED;
new_time_entry.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/windowScroller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
> <RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
> <Button
android:id="@+id/btnStartStopResume"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dip"
android:text="Start Timing"
android:textSize="40dp"
android:height="290dp"
android:onClick="doStartStopResume" />
<TextView
android:id="@+id/lblSpacer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/btnStartStopResume"
android:layout_centerHorizontal="true"
android:text="@string/add_scroll_down_for_more" />
<TextView
android:id="@+id/lblTimeStartLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/lblSpacer"
android:layout_alignParentLeft="true"
android:clickable="true"
android:onClick="adjustStartTime"
android:text="Start of this run:"
android:textSize="8dp" />
<TextView
android:id="@+id/lblTimeStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/lblTimeStartLabel"
android:layout_alignParentLeft="true"
android:clickable="true"
android:onClick="adjustStartTime"
android:text="--:--:-- --"
android:textColor="#FFFFFF"
android:textSize="26dp" />
<TextView
android:id="@+id/lblElapsedLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/lblSpacer"
android:layout_alignRight="@id/lblSpacer"
android:layout_marginRight="5dp"
android:text="Elapsed Time:"
android:textSize="8dp" />
<TextView
android:id="@+id/lblTimeElapsed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/lblElapsedLabel"
android:layout_alignRight="@id/lblSpacer"
android:layout_marginRight="5dp"
android:textColor="#99ff66"
android:text="-- m -- sec"
android:textSize="26dp"
android:layout_marginBottom="10dip"/>
<CheckBox
android:id="@+id/chkNewRun"
android:onClick="doNewRunClick"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/lblTimeElapsed"
android:text="This is a new run of timings"
android:layout_marginBottom="10dip" />

<TextView
android:id="@+id/lblIntensity"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Intensity (1 = none 5 = max)"
android:layout_below="@id/chkNewRun" />
<RatingBar
android:id="@+id/rbIntensity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/lblIntensity"
android:numStars="5"
android:rating="2"
android:layout_marginBottom="5dip" />

<TextView
android:id="@+id/lblNotes"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Notes:"
android:layout_below="@id/rbIntensity" />
<EditText
android:id="@+id/txtNotes"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/editbox_background"
android:layout_below="@id/lblNotes"
android:layout_marginBottom="10dip" />
<Button
android:id="@+id/btnReset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtNotes"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:text="Reset"
android:onClick="doReset" />
<Button
android:id="@+id/btnOk"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/txtNotes"
android:layout_toRightOf="@id/btnReset"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:text="Add Timing To List"
android:onClick="doAddTiming" />
</RelativeLayout>
</ScrollView>
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Timer</string>
<string name="dlg_edit_timing_title">Edit A Timing</string>
<string name="add_scroll_down_for_more">< Scroll down for more options! ></string>
<string name="add_scroll_down_to_add">< Scroll down to save this timing! ></string>
<string name="start_timing">Start Timing
</string>
<string name="stop_timing">Pause Timing
</string>
<string name="resume_timing">Resume Timing
</string>
</resources>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="bug.android.scrollview"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MyTestApp"
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>
<uses-sdk android:minSdkVersion="5" />
</manifest>
UPDATE 1: Adding if( btnStartStopResume.isInTouchMode() )
Toast.makeText(this, "TOUCH MODE", 2000);
elseToast.makeText(this, "NOT touch mode", 2000);
then setting breakpoints in the debugger confirms that the button is always in touch mode (regardless of whether I finger-drag the panel up/down, or mouse-wheel it up/down). So it's a combination of being in touch-mode AND finger-dragging the panel after the 2nd button-press (i.e, when the app is in 'stopped/paused timing' mode) that's causing the odd extra-timing in subsequent pauses.
UPDATE 2:
I just noticed that it's scrolling down to the EditText, and no further. It looks like when you move the panel down the EditText gets the selection, and after the click event the ScrollView scrolls back to the thing that has the selection. Seems to explain why the mouse-wheel approach doesn't have this problem (it moves the selection/focus back up to the button).

View 1 Replies View Related

Android :: Scroll To Last Line Of Table Layout Within Scroll View

Jun 21, 2010

I want to have a dynamic table, with rows added over time as a result of user interaction, using a TableLayout inside a ScrollView. This works fine, but when I want to scroll to the end of the table using fullScroll(), it always leaves out the last line; that is, it scrolls so that the one before the last one is visible. The last line is visible when scrolling manually, and the scrollbar is correct too.I'm of course open to suggestions as to how to make a better layout out of this; but I'm specifically interested in understanding why fullScroll() behaves that way. Should I give it a different parameter, or use something else altogether? Or does it do that because the newly added line isn't yet visible somehow? (if so, how can I solve that?) Or did I miss some other obvious thing?The following code replicates the problem: TestActivity.java:
package com.example.android.tests;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button) findViewById(R.id.AddRow)).setOnClickListener(new View.OnClickListener() { public void onClick(View v) {
Random rnd = new Random();
TableRow nr = new TableRow(v.getContext());
for (int c=0; c<3; c++) {
TextView nv = new TextView(v.getContext());
nv.setText(Integer.toString(rnd.nextInt(20)-10));
nr.addView(nv);
}((TableLayout) findViewById(R.id.Table)).addView(nr);
// Scrolls to line before last - why?
((ScrollView) findViewById(R.id.TableScroller)).fullScroll(View.FOCUS_DOWN);
}main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:text="Add Row"
android:id="@+id/AddRow"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" />
<ScrollView
android:id="@+id/TableScroller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/AddRow"
android:layout_alignParentTop="true" >
<TableLayout
android:id="@+id/Table"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="0,1,2" />
</ScrollView>
</RelativeLayout>
Edit: for reference, I implemented Romain Guy's solution as follows:In TestActivity.java, replace:
// Scrolls to line before last - why?
((ScrollView) findViewById(R.id.TableScroller)).fullScroll(View.FOCUS_DOWN);
// Enqueue the scrolling to happen after the new row has been layout
((ScrollView) findViewById(R.id.TableScroller)).post(new Runnable() {
public void run() {
((ScrollView) findViewById(R.id.TableScroller)).fullScroll(View.FOCUS_DOWN);

View 1 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved