2017-02-06 1 views
-1

Actuellement, j'ai un framelayout qui a sa couleur de fond déterminée par le nombre de lignes dans un textview qu'il détient. Si le nombre de lignes dépasse 2, alors je veux avoir une couleur de fond différente. Pour les changements d'orientation de l'écran, je veux recalculer la couleur d'arrière-plan de la méthode onConfigurationChanged. Quand j'appelle, je reçois toujours le nombre de lignes d'avant le changement d'orientation. En d'autres termes, lineCount retournera lineCount avant le changement d'orientation.Android: Obtenir le nombre de lignes de textview après changement d'orientation

Il sera toujours en retard d'un changement d'orientation. Y a-t-il une solution à cela?

+1

Pouvez-vous montrer votre premier code? – TruongHieu

+0

Salut, avez-vous pu résoudre ce problème? –

Répondre

0

En utilisant

int lineCnt = textView.getLineCount(); 

avec handling orientation change En fait, il y a 2 façons de le manipuler. Un besoin de redémarrer sur votre activité, un autre pas. J'ai lu les commentaires que l'activité de redémarrage est recommandée.

Si vous

vous pouvez rencontrer une situation dans laquelle le redémarrage de votre application et la restauration des quantités importantes de données peuvent être coûteuses et créer une expérience utilisateur médiocre

Vous pourriez envisager de ne pas redémarrer votre activité en faisant ce qui suit:

en xml:

<activity android:name=".MyActivity" 
     android:configChanges="orientation|keyboardHidden" 
     android:label="@string/app_name"> 

Dans l'activité

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
}