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?

  • Android: ¿dónde se guardan los archivos descargados?
  • Clic en el elemento programáticamente en RecyclerView
  • ¿Cómo saber si el usuario ha cambiado el estado del botón de alternancia?
  • Los eventos de toque del navegador Android detienen la visualización que se actualiza. Lienzo / elementos - ¿Cómo trabajar?
  • Ventajas de DialogFragment sobre AlertDialog
  • Problema al recibir notificación push en el cliente de GCM
  • 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

  • Ir a la pantalla de inicio programáticamente
  • Título en blanco en la barra de acción
  • SocketTimeoutException en Retrofit
  • Compatibilidad con la versión de la API de Android
  • ¿Cómo administrar un DialogFragment con RxJava?
  • Uso de la herramienta jobb en Android
  • 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.