Wie deaktiviere man die TextView maxLines programmgesteuert?

Ich habe eine harte Zeit, das maxLines Attribut eines TextView programmgesteuert zurückzusetzen.

Just versuchte Einstellung auf 0 und es funktioniert nicht. -1 stürzt die Anwendung ab. Ich könnte einen einfacheren Workaround verwenden und die maxLines auf 5000 maxLines , aber das will ich nicht.

Irgendwelche Ideen, wie man das macht?

AKTUALISIERT

Nun, ich habe ein Problem gefunden .. Ich habe auch die Ellipse gesetzt … Ich werde nur die folgende Problemumgehung verwenden:

 TextView questionDetail = (TextView) mQuestionDetailHeader.findViewById(R.id.desc); questionDetail.setText(mCurrentQuestion.getQuestion()); questionDetail.setMaxLines(Integer.MAX_VALUE); //As in the android sourcecode questionDetail.setEllipsize(null); 

  • Wie kann der Benutzer einen Textbereich in einem TextView auswählen (ähnlich wie EditText)
  • Programmgesteuert links in einem TextView zeichnen
  • Android-Betriebssystem-Bug mit einigen Geräten mit Jelly Bean / 4.2.1 - TextView.setError (CharSequence-Fehler) Fehlende Ikone
  • Unterschiedliche Schriftgröße von Strings in derselben Textansicht
  • Richtig ausrichten Text in android TextView
  • Wie fügt man einen Text in Textansicht android hinzu
  • EditText, wie man das Kopier- / Einfügen-Popup ohne Aktionsleiste aktiviert?
  • Wie kann man den Schriftstil fett, kursiv und unterstrichen in einem Android TextView setzen?
  • 4 Solutions collect form web for “Wie deaktiviere man die TextView maxLines programmgesteuert?”

    Da es noch keine genehmigte Antwort gibt – die richtige Möglichkeit, die maxlines-Eigenschaft des TextView zurückzusetzen, ist:

    textView.setMaxLines(Integer.MAX_VALUE);

    Wie nach Valdemars Kommentar und dieser Stackoverflow-Antwort . Mit -1 wird eine ArrayIndexOutOfBoundsException .

    MARQEE Sie nur MARQEE und MARQEE setEllipsize () -Einstellungen werden für maxlines> = 2 gemäß der Dokumentation beachtet:

    Wenn setMaxLines (int) verwendet wurde, um zwei oder mehr Zeilen einzustellen, werden END und MARQUEE * nur unterstützt (andere Ellipsentypen werden nichts tun).

    Die -1 sollte deine Anwendung nicht abstürzen. Dies tatsächlich, was in TextView standardmäßig verwendet wird:

     case com.android.internal.R.styleable.TextView_maxLines: setMaxLines(a.getInt(attr, -1)); break; 

    Dieses Stück von Code zeigt, dass, wenn android:maxLines nicht angegeben ist, dann Code verwendet -1 , um den Wert über setMaxLines() Funktion zu setzen.


    Ich habe auch Testantrag gemacht, um meine Schlussfolgerungen zu überprüfen. Und es geht gut, ohne zu stürzen:

     public class HelloWorld extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); TextView text = (TextView)findViewById(R.id.text); text.setMaxLines(-1); } } 

    Für die Einstellung der maxLines für einen Text verwenden Sie mTextView.setMaxLines (0) oder Sie müssen programmgesteuert den Höhentext messen und mit der Anzahl der maximalen Zeilen multiplizieren. Das Ergebnis sollte als Höhe des TextViews festgelegt werden

    Wenn du nur eine einzige Zeile haben willst, warum nimmst du denn nicht:

      txtView.setSingleLine(true); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.