TextView doesn't scroll smoothly

I am trying to scroll through the text using the following code:

TextView text = (TextView) findViewById(R.id.textView12); text.setMovementMethod(ScrollingMovementMethod.getInstance()); int height = getResources().getDrawable(R.drawable.pic_ground_pranic).getIntrinsicHeight(); text.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, height)); text.setText("As part of an Android App I am building a button set.For performance reasons and to keep the code simpler, the Android system uses pixels as the standard unit for expressing dimension or coordinate values. That means that the dimensions of a view are always expressed in the code using pixels, but always based on the current screen density. For instance, if myView.getWidth() returns 10, the view is 10 pixels wide on the current screen, but on a device with a higher density screen, the value returned might be 15. If you use pixel values in your application code to work with bitmaps that are not pre-scaled for the current screen density, you might need to scale the pixel values that you use in your code If you need to control exactly how your application will look on various screen configurations, adjust your layouts and bitmap drawables in configuration-specific resource directories. For example, consider an icon that you want to display on medium and high density screens. Simply create your icon at two different sizes (for instance 100x100 for medium density and 150x150 for high density) and put the two variations in the appropriate directories, using the proper qualifiers: For instance, suppose a device has a WVGA high-density screen, which is 480x800 and about the same size as a traditional HVGA screen, but it running an application that has disabled pre-scaling. In this case, the system will lie to the application when it queries for screen dimensions, and report 320x533 (the approximate mdpi translation for the screen density). Then, when the application does drawing operations, such as invalidating the rectangle from (10,10) to (100, 100), the system transforms the coordinates by scaling them the appropriate amount, and actually invalidate the region (15,15) to (150, 150). This discrepancy may cause unexpected behavior if your application directly manipulates the scaled bitmap, but this is considered a reasonable trade-off to keep the performance of applications as good as possible. If you encounter this situation, read Based on the density of the current screen, the system uses any size- or density-specific resources from your application and displays them without scaling. If resources are not available in the correct density, the system loads the default resources and scales them up or down as needed to match the current screen density. The system assumes that default resources (those from a directory without configuration qualifiers) are designed for the baseline screen density (mdpi), unless they are loaded from a density-specific resource directory. Pre-scaling is, thus, what the system does when resizing a bitmap to the appropriate size for the current screen density. to match the un-scaled bitmap source. The buttons are part of a nested set of LinearLayouts.The question then is: How to resize the layout.I have tried several suggested techniques, and none come close to working. Here is a subset of the XML that builds the button set:"); 

Everything works fine, but my text view doesn't scroll smoothly. I thought I should put my Textview inside a Scrollview, but this does not work either.

Is this because I am resizing my text?

Please provide any solution to this problem. I have already spent a lot of time on this.

My xml layout file:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ScrollView android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/include1" android:layout_centerHorizontal="true" android:background="@android:color/white" android:scrollbarStyle="insideInset" > <TableLayout android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="5dp" > <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RelativeLayout android:id="@+id/relativeLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" > <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_marginLeft="5dp" android:layout_marginTop="14dp" android:text="Text 1" android:textColor="@android:color/black" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/textView2" android:layout_marginLeft="25dp" android:layout_toRightOf="@+id/textView2" android:text="Text 2" android:textColor="@android:color/black" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/textView3" android:layout_marginLeft="25dp" android:layout_toRightOf="@+id/textView3" android:text="Text 3" android:textColor="@android:color/black" /> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@+id/textView4" android:layout_marginLeft="25dp" android:layout_toRightOf="@+id/textView4" android:text="Text 4" android:textColor="@android:color/black" /> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/textView2" android:layout_marginLeft="5dp" android:layout_marginTop="3dp" android:textColor="@android:color/black" /> <TextView android:id="@+id/textView7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView3" android:layout_below="@+id/textView3" android:layout_marginTop="3dp" android:textColor="@android:color/black" /> <TextView android:id="@+id/textView8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView4" android:layout_below="@+id/textView4" android:layout_marginTop="3dp" android:textColor="@android:color/black" /> <TextView android:id="@+id/textView9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView5" android:layout_below="@+id/textView5" android:layout_marginTop="3dp" android:textColor="@android:color/black" /> </RelativeLayout> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RelativeLayout android:id="@+id/relativeLayout3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" > <SeekBar android:id="@+id/seekBar1" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:soundEffectsEnabled="true" /> <TextView android:id="@+id/textView10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:text="Volume 1" android:textColor="@android:color/black" /> </RelativeLayout> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RelativeLayout android:id="@+id/relativeLayout4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" > <SeekBar android:id="@+id/seekBar2" android:layout_width="150dp" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:soundEffectsEnabled="true" /> <TextView android:id="@+id/textView11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:text="Volume 2" android:textColor="@android:color/black" /> </RelativeLayout> </TableRow> <TableRow android:id="@+id/tableRow4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:baselineAligned="false" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="Save Volumes" /> </LinearLayout> </TableRow> <TableRow android:id="@+id/tableRow5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <FrameLayout android:id="@+id/frameLayout3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" android:orientation="vertical" > <TextView android:id="@+id/textView12" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_vertical|center_horizontal" android:gravity="top|left" android:scrollbars="vertical" android:visibility="visible" /> </FrameLayout> </TableRow> <TableRow android:id="@+id/tableRow8" android:layout_width="wrap_content" android:layout_height="wrap_content" > <FrameLayout android:id="@+id/frameLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center" /> <TextView android:id="@+id/textView13" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center" android:layout_marginRight="30dp" android:clickable="true" android:text="Detailed Instruction" /> </FrameLayout> </TableRow> </TableLayout> </ScrollView> </RelativeLayout> 

Thanks in advance!

+6
source share
4 answers

ScrollView problem inside ScrollView .

When you install ScrollView inside ScrollView android just confuse what kind of scroll touched. Therefore, sometimes it cannot deliver a touch event.

After searching for a while, I found a link or blog that would extract this problem and also have a solution.

Take a look at this blog. This is exactly what you were looking for, and I'm sure it will solve your problem.

Now is the time to enjoy;)

+2
source

TextView scrolling is performed only if you limit its height. A simple rule is that the text is larger than the available space, and then the start of scrolling of the text. One way is what you follow by assigning a fixed height that you get from a certain image size. Another way is to set the maximum number of lines.

 TextView text = (TextView) findViewById(R.id.textView12); text.setMaxLines(5); text.setMovementMethod(ScrollingMovementMethod.getInstance()); 

You can even make it more dynamic. Just calculating the number of rows.

Number of lines = (image height in pixels) / (text font size in pixels)

+3
source

In my case, I just needed to put my TextView inside the ScrollView. Scrolling became very smooth, and users lived happily every time!

 <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:fillViewport="true" > <TextView android:id="@+id/textview_about" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textIsSelectable="true" android:textSize="20dp" /> </ScrollView> 
+3
source

First of all, there is no need to configure Layoutparams, because you pass it to the xml layout.

And if you have such a long line, then do not put it directly in java code. Instead, it places this line in the resource directory.

go to the values ​​and open the strings.xml file and define your line.

See below:

  <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HelperStackOverflowActivity!</string> <string name="app_name">HelperStackOverflow</string> <string name="String1">"PUT YOUR STRING HERE" </string> </resources> 

After that, set the line in the Java code whenever you want. as if:

  text = (TextView)findViewById(R.id.textView12); text.setText(getResources().getString(R.string.String1)); 

It scrolls like a normal scroll.

Hope this helps you.

Enjoy. :)

0
source

Source: https://habr.com/ru/post/911497/


All Articles