Come impostare un'altezza massima con il contenuto dell'involucro in android?

In Android, come puoi creare una visualizzazione di scorrimento che ha un'altezza massima e avvolge i contenuti, in pratica avvolge verticalmente il contenuto, ma ha un'altezza massima?

Provai

  • Sqlite vuoto errore cursore?
  • RelativeLayout "Imansible risolvere risorse ..." Android
  • Ottieni Nome dispositivo Android
  • Imposta l'ellisse titolo titolo attività al centro?
  • Qualcuno sa il significato del risultato del command 'top' in android?
  • Qual è l'elenco delle attività eseguite da ConnectedAndroidTest?
  • <ScrollView android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxHeight="200dp" android:layout_alignParentBottom="true" > <LinearLayout android:id="@+id/maincontainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> </ScrollView> 

    Ma questo non funziona?

    5 Solutions collect form web for “Come impostare un'altezza massima con il contenuto dell'involucro in android?”

    Ho esteso ScrollView e ho aggiunto codice per implementare questa funzionalità:

    https://gist.github.com/JMPergar/439aaa3249fa184c7c0c

    Spero che sia utile.

    è ansible aggiungere questo a qualsiasi vista (sovrascrivi suMeasure in una class ereditata da una vista)

     @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (maxHeight > 0){ int hSize = MeasureSpec.getSize(heightMeasureSpec); int hMode = MeasureSpec.getMode(heightMeasureSpec); switch (hMode){ case MeasureSpec.AT_MOST: heightMeasureSpec = MeasureSpec.makeMeasureSpec(Math.min(hSize, maxHeight), MeasureSpec.AT_MOST); break; case MeasureSpec.UNSPECIFIED: heightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeight, MeasureSpec.AT_MOST); break; case MeasureSpec.EXACTLY: heightMeasureSpec = MeasureSpec.makeMeasureSpec(Math.min(hSize, maxHeight), MeasureSpec.EXACTLY); break; } } super.onMeasure(widthMeasureSpec, heightMeasureSpec); } 

    Puoi farlo in modo programmato.

      private static class OnViewGlobalLayoutListener implements ViewTreeObserver.OnGlobalLayoutListener { private final static int maxHeight = 130; private View view; public OnViewGlobalLayoutListener(View view) { this.view = view; } @Override public void onGlobalLayout() { if (view.getHeight() > maxHeight) view.getLayoutParams().height = maxHeight; } } 

    E aggiunge l'ascoltatore alla vista:

     view.getViewTreeObserver() .addOnGlobalLayoutListener(new OnViewGlobalLayoutListener(view)); 

    L'ascoltatore chiamerà il metodo onGlobalLayout (), quando verrà modificata l'altezza vista.

    per l'altezza di visione di scorrimento impostata è necessario utilizzare 2 linerlayout all'interno insieme e quindi impostare la vista scrool come loro figlio quindi impostare il layout di linea linerlayout: altezza per altezza di scorrimento limite.

    Qui puoi impostare l'altezza del tuo Scrollview come questo:

     <ScrollView android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="200dp" android:layout_alignParentBottom="true" > <LinearLayout android:id="@+id/maincontainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> </ScrollView> 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.