2012-03-23 7 views
6

Sto cercando di scorrere la mia TextView utilizzando il seguente codice:TextView non lo scorrimento senza intoppi

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

tutto funziona bene, ma mio punto di vista del testo non scorre senza intoppi. Ho pensato di dover inserire la mia Textview all'interno di una Scrollview, ma anche questo non funziona.

Accade perché sto ridimensionando la mia visualizzazione di testo?

Si prega di fornire qualsiasi soluzione per questo problema. Ho già passato molto tempo su questo.

mio file di layout XML è:

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

Grazie in anticipo!

+0

Il problema è stato risolto? Si prega di vedere la mia risposta in quanto funziona secondo le vostre esigenze. E accettalo se funziona. –

risposta

2

il problema è ScrollView all'interno di ScrollView.

Quando si inserisce ScrollView all'interno di ScrollView, Android si confonde con quale visualizzazione di scorrimento viene toccata. Quindi a volte non riesce a fornire un evento di tocco.

Dopo aver cercato per un po 'ho trovato un collegamento o blog che estrae questo problema e ha anche una soluzione.

Dai uno sguardo al blog this. Questo è esattamente quello che stavi cercando e sono sicuro che risolverà il tuo problema.

Ora il tempo di godere;)

+0

Ho provato questo e ora il mio problema è risolto. Grazie per questa utile risposta. – Pari

0

Prima di tutto, non è necessario impostare Layoutparam perché è stato assegnato al layout xml.

E se si dispone di una stringa così lunga, non posizionarla direttamente su codice java. Invece di mettere quella stringa nella directory delle risorse.

passare ai valori e aprire il file strings.xml e definire la stringa.

vedere qui sotto:

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

Dopo aver fatto che impostare la stringa di codice Java ogni volta che vuoi. come come:

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

è Scorrere bello come lo scorrimento normale.

Spero che ti possa aiutare.

Divertiti. :)

+0

Prima di tutto mi dispiace per la risposta e stavo facendo tutto ciò che hai suggerito, ma questo non può aiutare. TextView non scorre come mia eccezione. Sto facendo così '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)); ' cosa sto facendo lavorando qui perché TextView non scorre? – Pari

+0

rimuovere tutta la linea e aggiungere solo questa riga e try.TextView text = (TextView) findViewById (R.id.textView12); text.setText (. getResources() getString (R.string.myString)); –

+0

se faccio questo mentre dici che TextView hight aumenta automaticamente in base al testo come "wrap content" e se ho impostato height su "193px", allora non scorre. Penso che senza usare la vista del testo ScrollView non scorrabile. – Pari

3

Il rotolo TextView solo se si limita la sua altezza. La regola semplice è quando il testo è più dello spazio disponibile, quindi la visualizzazione del testo inizia a scorrere. Un modo è quello che stai seguendo assegnando un'altezza fissa che hai ottenuto da alcune dimensioni dell'immagine. Un altro modo è impostando il numero massimo di linee.

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

puoi persino renderlo più dinamico. Semplicemente calcolando il numero di linee.

Numero di righe = (immagine altezza in pixel)/(testo dimensione del carattere in pixel)

+1

Ha smussato la mia vista testuale. Grazie. – jasonflaherty

3

Nel mio caso ho solo bisogno di mettere il mio TextView all'interno di una ScrollView. Lo scorrimento è diventato molto fluido e gli utenti hanno vissuto felici e contenti!

<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> 
Problemi correlati