Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo desplazar el diseño que tiene 3 vista de lista

Tengo un diseño. Este diseño contiene 3 vistas de lista con la altura de los datos de wrap_content en el Listview no son fijas. Cuando Listview tiene un liitel enorme datos en ese momento los datos van a debajo y los datos no pueden ver, así que quiero desplazar la vista con los tres Listview cómo es posible.

¿Alguien tiene una idea sobre esto?

  • Bloquear dispositivo Android en una sola aplicación
  • PhoneGap / Cordova Android obtener el tamaño de la pantalla después de onDeviceReady
  • Android: configuración forzosa restablecida en los cambios de orientación
  • ¿Cómo manejar navegación basada en interfaz de usuario en aplicaciones de plataforma cruzada?
  • ¿Podemos instalar Android OS en cualquier Windows Phone y viceversa, y lo mismo con iPhone y viceversa?
  • Snackbar no funciona dentro de la clase de fragmento
  • Esta es mi vista que contiene 3 Listview, ahora es con menos datos, pero cuando los datos harán enormes en ese momento el último Listview tienen un problema para ver. Quiero desplazar la vista de color gris …

    Introduzca aquí la descripción de la imagen

  • Android VpnService para capturar paquetes no captura paquetes
  • ¿Es Android NSD (Network Service Discovery) compatible con el servicio Bonjour en iOS?
  • Escenario de Android donde ondestroy () se llama sin onpause () o onstop ()
  • ¿Cómo encontrar wifi y el uso de datos de red por separado por aplicación particular en android?
  • CursorLoader no se actualiza después del cambio de datos
  • Arrastrar y soltar diseño en android 2.2
  • 5 Solutions collect form web for “Cómo desplazar el diseño que tiene 3 vista de lista”

    Utilice el diseño lineal en lugar de listview en su archivo xml. Este es su archivo xml.

    <?xml version="1.0" encoding="utf-8"?> <ScrollView android:id="@+id/scr" android:layout_height="fill_parent" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout android:layout_width="fill_parent" android:id="@+id/r2" android:orientation="vertical" android:layout_height="fill_parent" android:paddingTop="100dip" android:paddingBottom="100dip"> <LinearLayout android:layout_width="fill_parent" android:id="@+id/l1" android:orientation="vertical" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:background="#00B2EE"> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:id="@+id/l2" android:orientation="vertical" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:background="#00EE76"> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:id="@+id/l3" android:orientation="vertical" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:background="#7171C6"> </LinearLayout> </LinearLayout> </ScrollView> 

    Y poner otro xml que se inflará por lista.

    Esta es tu clase de actividad principal.

     package com.list.add; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; public class NewlistActivity extends Activity { /** Called when the activity is first created. */ LinearLayout l1,l2,l3; ScrollView scrollView; ViewGroup contentView; List<String> list = new ArrayList<String>(); List<String> list1 = new ArrayList<String>(); List<String> list2 = new ArrayList<String>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); l1 = (LinearLayout) findViewById(R.id.l1); l2 = (LinearLayout) findViewById(R.id.l2); l3 = (LinearLayout) findViewById(R.id.l3); scrollView = (ScrollView) findViewById(R.id.scr); contentView = (ViewGroup) findViewById(R.id.r2); scrollView.setOnTouchListener(new ScrollPager(scrollView, contentView)); scrollView.post(new Runnable() { public void run() { scrollView.scrollTo(0, contentView.getPaddingTop()); } }); list.add("Parth"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Parth"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Shah"); list.add("Parth"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Parth"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Chirag"); list.add("Shah"); list1.add("Parth"); list1.add("Parth"); list1.add("Parth"); list1.add("Parth"); list1.add("Parth"); list1.add("Parth"); list2.add("Kalpesh"); list2.add("Kalpesh"); list2.add("Kalpesh"); list2.add("Kalpesh"); list2.add("Kalpesh"); list2.add("Kalpesh"); list2.add("Kalpesh"); System.out.println(list); System.out.println(list1); System.out.println(list2); for (int i=0; i<list.size(); i++) { LayoutInflater inflater = getLayoutInflater(); View vi = inflater.inflate(R.layout.raw, null); TextView tv = (TextView) vi.findViewById(R.id.textView1); tv.setText(list.get(i)); l1.addView(vi); } for (int i=0; i<list1.size(); i++) { LayoutInflater inflater = getLayoutInflater(); View vi = inflater.inflate(R.layout.raw, null); TextView tv = (TextView) vi.findViewById(R.id.textView1); tv.setText(list1.get(i)); l2.addView(vi); } for (int i=0; i<list2.size(); i++) { LayoutInflater inflater = getLayoutInflater(); View vi = inflater.inflate(R.layout.raw, null); TextView tv = (TextView) vi.findViewById(R.id.textView1); tv.setText(list2.get(i)); l3.addView(vi); } } } 

    Y hacer una clase scroller como esta:

     public class ScrollPager implements OnTouchListener public ScrollPager(ScrollView aScrollView, ViewGroup aContentView) { mScrollView = aScrollView; mContentView = aContentView; scroller = new Scroller(mScrollView.getContext(), new OvershootInterpolator()); task = new Runnable() { public void run() { scroller.computeScrollOffset(); mScrollView.scrollTo(0, scroller.getCurrY()); if (!scroller.isFinished()) { mScrollView.post(this); } } }; } public boolean onTouch(View v, MotionEvent event) { // Stop scrolling calculation. scroller.forceFinished(true); // Stop scrolling animation. mScrollView.removeCallbacks(task); if (event.getAction() == MotionEvent.ACTION_UP) { 

    Debe utilizar el atributo de peso android:layout_weight="1" en cada ListView en formato XML. De modo que se divide la pantalla con el mismo espacio para cada listview y su desplazamiento funcionará para cada ListView.

    Si está presentando material en una pila vertical u horizontal, debería utilizar LinearLayout y luego usar el atributo layout_weight para controlar las proporciones de las filas / columnas individuales dentro del contenedor.

    Si desea tamaño de pantalla, establezca layout_width y layout_height en fill_parent contrario no obtendrá toda la dimensión de pantalla disponible. Si intenta usar wrap_content para la altura, todo se derrumbará, a menos que recurra a restricciones de diseño adicionales, por ejemplo, minHeight .

    Usamos esto en todas partes y es bastante fiable. Para tres elementos, puede utilizar 1/1/1 o 3/3/3 .

    Los pesos también no tienen que ser iguales! Puedes dividir las proporciones como quieras; Los pesos son sólo relaciones relativas de todo el palmo (anchura / altura). Por ejemplo, si desea que el elemento central doble el tamaño, utilice 1/2/1 ; Si usted lo quiere el 40% utiliza 30/40/30 o 3/4/3 .

    Un buen "truco" es usar layout_weight = 1 en exactamente una fila / columna (otros predeterminados a cero), y "rellenar" cualquier espacio restante. Este es un escenario de disposición común.

    Si necesita que la pila se desplace, puede colocarla en un ScrollView . En este caso, debe establecer el layout_height del LinearLayout en wrap_content , y el colapso de los elementos dependerá del capricho del sistema de disposición (lo que significa que debe utilizar restricciones min / max).

    En su lugar, permítanme dar mi mejor idea para el mismo tipo de implementación.

    ¿Alguna vez pensaste en usar ExpandableListView para el mismo tipo de implementación? Simplemente muestre el primer elemento de grupo como expandido y haga que otros 2 grupos se colapsen, simplemente expóngalo cuando haga clic en el grupo en particular.

    Aquí hay algunos ejemplos para el mismo:

    1. http://techdroid.kbeanie.com/2010/09/expandablelistview-on-android.html
    2. http://coderzheaven.com/2011/04/expandable-listview-in-android-using-simpleexpandablelistadapter-a-simple-example/

    Estoy seguro de que esta idea no es buena, pero si se implementa esto, entonces seguro que se encuentra beneficioso en su caso.

    Utilice este método y su listview se puede desplazar dentro de scrollview: –

     ListView lstNewsOffer.setAdapter(new ViewOfferAdapter( ViewNewsDetail.this, viewOfferList)); getListViewSize(lstNewsOffer); void getListViewSize(ListView myListView) { ListAdapter myListAdapter = myListView.getAdapter(); if (myListAdapter == null) { // do nothing return null return; } // set listAdapter in loop for getting final size int totalHeight = 0; for (int size = 0; size < myListAdapter.getCount(); size++) { View listItem = myListAdapter.getView(size, null, myListView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } // setting listview item in adapter ViewGroup.LayoutParams params = myListView.getLayoutParams(); params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1)); myListView.setLayoutParams(params); // print height of adapter on log Log.i("height of listItem:", String.valueOf(totalHeight)); 

    }

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.