recycler - separador android studio
Android Separador de dibujo/línea divisora en diseño? (30)
Me gustaría dibujar una línea justo en el medio de un diseño y usarla como separador de otros elementos como TextView. ¿Hay un buen widget para esto? Realmente no quiero usar una imagen ya que sería difícil hacer coincidir los otros componentes con ella. Y quiero que esté relativamente posicionado también. Gracias
Tengo la forma más fácil de agregar divisor.
Divisor vertical:
<View style="@style/dividerVertical"/>
Divisor horizontal:
<View style="@style/dividerHorizontal"/>
Eso es todo, sí!
Solo pon esto en res>values>styles.xml
<style name="dividerBase">
<item name="android:background">?android:attr/listDivider</item> //you can give your color here. that will change all divider color in your app.
</style>
<style name="dividerHorizontal" parent="dividerBase">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item> // You can change thickness here.
</style>
<style name="dividerVertical" parent="dividerBase">
<item name="android:layout_width">1dp</item>
<item name="android:layout_height">match_parent</item>
</style>
Añadiendo esta vista; que dibuja un separador entre tus textviews
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000000" />
Agrega un divisor horizontal a cualquier lugar en su diseño.
<TextView
style="?android:listSeparatorTextViewStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
Agrega una línea negra horizontal usando esto:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000000"
android:layout_marginTop="10dp"/>
Agregue esto en su diseño donde desee el divisor (modifique los atributos para que se ajusten a sus necesidades):
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@android:drawable/divider_horizontal_dark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingBottom="2dp"
android:paddingTop="2dp" />
Aquí está el código "una línea divisoria horizontal entre dos vistas de texto". Prueba esto
<TextView
android:id="@id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="5dp"
android:inputType="textPersonName"
android:text:"address" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/black"/>
<TextView
android:id="@id/textView7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text:"Upload File" />/>
Aquí está su respuesta ... este es un ejemplo para dibujar una línea entre los controles ...
<TextView
android:id="@+id/textView1"
style="@style/behindMenuItemLabel1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:text="FaceBook Feeds" />
<View
android:layout_width="fill_parent"
android:layout_height="2dp"
android:background="#d13033"/>
<ListView
android:id="@+id/list1"
android:layout_width="350dp"
android:layout_height="50dp" />
Este código dibuja una línea entre dos controles ...
Divide el espacio en dos partes iguales:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:divider="?android:dividerHorizontal"
android:showDividers="end"></LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"></LinearLayout>
</LinearLayout>
Observe que una parte contiene un divisor al final
En los casos en los que uno utiliza la propiedad android:layout_weight
para asignar espacio de pantalla disponible a los componentes del diseño, por ejemplo
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
...
...
</LinearLayout>
/* And we want to add a verical separator here */
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
...
...
</LinearLayout>
</LinearLayout>
Para agregar un separador entre los dos diseños existentes que ya ocupó todo el espacio de la pantalla, no podemos simplemente agregar otro LinearLayout con android:weight:"1"
porque eso hará tres columnas de igual ancho que no queremos. En su lugar, disminuiremos la cantidad de espacio que le daremos a este nuevo diseño. El código final se vería así:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
...
...
</LinearLayout>
/* *************** ********************** */
/* Add another LinearLayout with android:layout_weight="0.01" and
android:background="#your_choice" */
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.01"
android:background="@android:color/darker_gray"
/>
/* Or View can be used */
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:background="@android:color/darker_gray"
/>
/* *************** ********************** */
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
...
...
</LinearLayout>
</LinearLayout>
Es muy sencillo. Solo crea una vista con el color de fondo negro.
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"/>
Esto creará una línea horizontal con color de fondo. También puede agregar otros atributos como márgenes, rellenos, etc. como cualquier otra vista.
Esto te ayudaría a resolver este problema. Aquí se crea una pequeña vista para hacer una línea negra como separador entre dos vistas.
<View
android:layout_width="3dp"
android:layout_height="wrap_content"
android:background="@android:color/black"
/>
Para completar la respuesta de Camille Sévigny, puede definir adicionalmente su propia forma de línea, por ejemplo, para personalizar el color de la línea.
Definir una forma xml en el directorio dibujable. line_horizontal.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" android:shape="line">
<stroke android:width="2dp" android:color="@android:color/holo_blue_dark" />
<size android:width="5dp" />
</shape>
Utilice esta línea en su diseño con los atributos deseados:
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="2dp"
android:src="@drawable/line_horizontal" />
Para mejorar las respuestas proporcionadas por y Dan Dar3
Agregué esto a mis estilos:
<style name="Divider">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item>
<item name="android:background">?android:attr/listDivider</item>
</style>
Luego en mis diseños hay menos código y es más fácil de leer.
<View style="@style/Divider"/>
Por ejemplo, si utilizó recyclerView para sus artículos:
en build.gradle escribe:
dependencies {
compile ''com.yqritc:recyclerview-flexibledivider:1.4.0''
Si desea configurar los valores de color, tamaño y margen, puede especificar como sigue:
RecyclerView recyclerView = (RecyclerView)
findViewById(R.id.recyclerview);
recyclerView.addItemDecoration(
new HorizontalDividerItemDecoration.Builder(this)
.color(Color.RED)
.sizeResId(R.dimen.divider)
.marginResId(R.dimen.leftmargin, R.dimen.rightmargin)
.build());
Puede usar este elemento <View>
justo después de First TextView.
<View
android:layout_marginTop="@dimen/d10dp"
android:id="@+id/view1"
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#c0c0c0"/>
Puedes usar esto en LinearLayout
:
android:divider="?android:dividerHorizontal"
android:showDividers="middle"
Por ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="?android:dividerHorizontal"
android:showDividers="middle"
android:orientation="vertical" >
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="abcd gttff hthjj ssrt guj"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="abcd"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="abcd gttff hthjj ssrt guj"/>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="abcd"/>
</LinearLayout>
Si lo vas a usar mucho, lo mejor que puedes hacer es
styles.xml:
<style name="Seperator">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item>
<item name="android:background">@color/light_color</item>
</style>
ahora en tu diseño, solo agrégalo como:
<View style="@style/Seperator" />
Si usa ActionBarSherlock, puede usar la clase com.actionbarsherlock.internal.widget.IcsLinearLayout para admitir divisores y mostrarlos entre las vistas.
ejemplo de uso:
<com.actionbarsherlock.internal.widget.IcsLinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:divider="@drawable/divider"
android:dividerPadding="10dp"
android:orientation="vertical"
android:showDividers="beginning|middle|end" >
... children...
res / drawable / divider.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<size android:height="2dip" />
<solid android:color="#FFff0000" />
</shape>
tenga en cuenta que por alguna razón, la vista previa en el diseñador gráfico dice "android.graphics.bitmap_delegate.nativeRecycle (I) Z". no estoy seguro de lo que significa, pero puede ignorarse, ya que funciona bien tanto en las nuevas versiones de Android como en las antiguas (probadas en Android 4.2 y 2.3).
Parece que el error solo se muestra cuando se utiliza API17 para el diseñador gráfico.
Solo escribe esto:
android:divider="?android:dividerHorizontal"
android:showDividers="middle"
Ejemplo completo:
<LinearLayout
android:id="@+id/llTipInformation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tvServiceRating"
android:orientation="horizontal"
android:divider="?android:dividerHorizontal"
android:layout_marginTop="@dimen/activity_horizontal_margin"
android:showDividers="middle">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@string/main.msg.tippercent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/colorWhite"
android:layout_marginTop="@dimen/activity_vertical_margin"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="@string/main.msg.tiptotal"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@color/colorWhite"
android:layout_marginTop="@dimen/activity_vertical_margin"/>
</LinearLayout>
Usualmente uso este código para agregar una línea horizontal:
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:color/darker_gray"/>
Para agregar un separador vertical, cambie los valores layout_width
y layout_height
Usualmente uso este código:
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:background="#aa000000" />
Si tiene un objeto en su diseño y desea establecer una línea debajo que use este atributo en ImageView:
android:layout_below="@+id/textBox1"
Versión en tiempo de ejecución:
View dividerView = new View(getContext());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, UIUtils.dpToPix(getContext(), 1));
dividerView.setLayoutParams(lp);
TypedArray array = getContext().getTheme()
.obtainStyledAttributes(new int[] {android.R.attr.listDivider});
Drawable draw = array.getDrawable(0);
array.recycle();
dividerView.setBackgroundDrawable(draw);
mParentLayout.addView(dividerView);
usa este código Ayudará
<LinearLayout
android:layout_width="0dip"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:divider="?android:dividerHorizontal"
android:gravity="center"
android:orientation="vertical"
android:showDividers="middle" >
usa este código xml para agregar una línea vertical
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:background="#000000" />
usa este código xml para agregar una linea horizontal
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000000" />
Solución simple
simplemente agregue este código en su diseño y reemplace ''Id_of__view_present_above'' al id de la vista, debajo del cual necesita el divisor.<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#c0c0c0"
android:id="@+id/your_id"
android:layout_marginTop="16dp"
android:layout_below="@+id/Id_of__view_present_above"
/>
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingTop="2dp"
android:scaleType="fitXY"
android:src="?android:attr/listDivider" />
<TextView
android:id="@+id/line"
style="?android:attr/listSeparatorTextViewStyle"
android:paddingTop="5dip"
android:gravity="center_horizontal"
android:layout_below="@+id/connect_help"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000" />
<View
android:layout_width="2dp"
android:layout_height="match_parent"
android:layout_marginTop="4dp"
android:background="@android:color/darker_gray" />
Entre dos diseños Ponga este código para obtener Divider.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<item
android:bottom="0dp"
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="@color/divider" />
</shape>
</item>
//for vertical line:
<View
android:layout_width="1dp"
android:layout_height="fill_parent"
android:background="#00000000" />
//for horizontal line:
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#00000000" />
//it works like a charm