2012-03-23 8 views
6

Estoy tratando de desplazarse mi TextView usando el siguiente código:TextView no desplazarse suavemente

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's 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's 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:"); 

todo funciona bien, pero mi punto de vista texto no se desplaza sin problemas. Pensé que tenía que poner mi Textview dentro de una vista de desplazamiento, pero esto tampoco funciona.

¿Sucede porque estoy cambiando el tamaño de mi vista de texto?

Proporcione cualquier solución para este problema. Ya pasé mucho tiempo en esto.

Mi archivo de diseño xml es:

<?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> 

Gracias de antemano!

+0

¿Se solucionó el problema? Por favor vea mi respuesta ya que funciona según su requisito. Y acéptalo si funciona. –

Respuesta

2

problema es ScrollView inside ScrollView.

Cuando se coloca ScrollView dentro de ScrollView android, solo se confunde qué vista de desplazamiento se toca. Por lo tanto, a veces no puede entregar el evento táctil.

Después de buscar por un tiempo, encontré un enlace o blog que extraerá este problema y también tendrá una solución.

Eche un vistazo al blog this. Esto es exactamente lo que ha estado buscando y estoy seguro de que resolverá su problema.

Ahora tiempo para disfrutar;)

+0

Intenté esto y ahora mi problema está resuelto. Gracias por esta útil respuesta. – Pari

0

En primer lugar, no hay necesidad de configurar los parametros de diseño como porque los ha entregado en el diseño xml.

Y si tiene una cadena tan larga, entonces no la ponga directamente en el código java. En lugar de poner esa cadena en el directorio de recursos.

vaya a los valores y abra el archivo strings.xml y defina su cadena.

ver más abajo:

<?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> 

Después de hacer eso establecer la cadena en código Java siempre que lo desee. como como:

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

que Scroll agradable como desplazamiento normal.

Espero que te ayude.

Disfrútalo. :)

+0

Antes que nada, lamento la respuesta y estaba haciendo todo lo que sugirió, pero esto no puede ayudar. TextView no se desplaza como mi excepción. Estoy haciendo esto 'TextView textView = (TextView) findViewById (R.id.textView12); \t \t TextView text = (TextView) findViewById (R.id.textView12); text.setMovementMethod (ScrollingMovementMethod.getInstance()); textView.setText (getResources(). GetString (R.string.myString)); ' ¿Qué estoy haciendo trabajando aquí? ¿Por qué TextView no se desplaza? – Pari

+0

elimine su línea completa y simplemente agregue esta línea y pruebe. TextView text = (TextView) findViewById (R.id.textView12); text.setText (getResources(). getString (R.string.myString)); –

+0

si hago esto cuando dices TextView hight aumenta automáticamente de acuerdo con el texto como "ajustar el contenido" y si configuro la altura como "193px", no se desplaza. Creo que sin utilizar ScrollView textview no se puede desplazar. – Pari

3

El desplazamiento TextView sólo si se restringe su altura. La regla simple es cuando el texto es más que el espacio disponible, luego la vista de texto comienza a desplazarse. Una forma es lo que está siguiendo asignando una altura fija que obtuvo de un tamaño de imagen. Otra forma es establecer el número máximo de líneas.

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

incluso puede hacerlo más dinámico. Simplemente calculando el número de líneas.

Número de líneas = (Altura de la imagen en píxeles)/(tamaño de fuente del texto en píxeles)

+1

Alisó mi vista de texto. Gracias. – jasonflaherty

3

En mi caso sólo tenía que poner mi TextView dentro de un ScrollView. ¡El desplazamiento se hizo muy sencillo y los usuarios vivieron felices cada tanto!

<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> 
Cuestiones relacionadas