Está en la página 1de 50

Manual: Output

Types
Alfa Soluciones TI

índice.
1. Grupo de funciones y módulo de funciones. 3

1
1.1. Creación de grupo de funciones. 3
1.2. Creación módulo de funciones. 4
1.3. Configuración de atributos en módulo de funciones. 5
1.4. Configuración de parámetros de entrada y salida. 6
1.5. Codificación de la lógica. 6
1.6. Crear un segundo módulo de funciones en el grupo de funciones (Opcional). 8
2. Web Service. 11
2.1. Crear Web Service. 11
2.1. Configurar Web Service. 16
3. Consumir Web Service. 17

2
Procedimiento para la generación de un
Web service.
1. Grupo de funciones y módulo de funciones.
Creación de nuestro servicio a través de la transacción SE37

1.1. Creación de grupo de funciones.


Una vez dentro lo primero que haremos será crear un grupo de funciones, para ellos nos
vamos al menú Pasar a -> Gestión gr.funciones -> Crear grupo

Y creamos el nombre del grupo esto es un paso muy importante ya que este grupo será el
que expondremos para tener varios métodos dentro del mismo WS.

3
1.2. Creación módulo de funciones.
Ya una vez almacenado en el paquete y transporte el grupo de funciones, ingresamos el
nombre de nuestro módulo de función y damos en click en botón Crear

Nos pedirá asignar nuestro módulo de función a un grupo de funciones. Ingresamos la


información requerida. El grupo de funciones será el cremos previamente.

4
Una vez hecho todo correcto nos mandara la siguiente pantalla

1.3. Configuración de atributos en módulo de funciones.


Lo primero será dirigirnos a la pestaña de atributos para configurar el acceso remoto. Forma
de ejecución seleccionaremos (Módulo de acceso remoto).

5
1.4. Configuración de parámetros de entrada y salida.
Procederemos a configurar los parámetros de entrada pestaña Import, para este caso como
será una especie de calculadora estaremos esperando 2 valores de tipo numérico y uno de
tipo carácter que será el que nos diga qué tipo de operación queremos hacer. Nos quedará
algo como lo siguiente:

Nota: Para el ejemplo se utilizan elementos de datos estándar. Podrían utilizar sin
problemas los propios.

Ahora continuamos con la pestaña Export. Aqui sera donde regresaremos propiamente el
resultado quedando algo parecido a esto:

Nota: es importante activar los check’s que activo ya que esto hace que los valores se
copien en lugar que se usen por referencia. En todos los modulos de funcion con llamado
remoto el traspaso de valores es fundamental.

1.5. Codificación de la lógica.


Continuamos definiendo la lógica, para esto nos dirigimos a la pestaña Cod. fte. E
ingresamos el código de la lógica de este ejemplo que es una calculadora.

6
Guardamos y activamos, al activar nos pedirá no sólo activar el módulo si no también el
grupo de funciones activamos todo lo relacionado a lo que estamos haciendo. Al final
aparecerá activo como se muestra en la imagen.

probamos nuestro servicio de forma local. En la misma pantalla en la que estábamos damos
click en ejecutar.

Ingresamos valores para la prueba y ejecutamos.

7
1.6. Crear un segundo módulo de funciones en el grupo de
funciones (Opcional).
Listo creamos el módulo de función a continuación crearemos otro módulo de función dentro
de este mismo grupo de funciones este nos regresara una subcadena de un texto.Esto con
la finalidad de que nuestro Web Service lleve implícito 2 métodos a ejecutar, más adelante
se verá más claro esta parte.

Los pasos a seguir son los mismos de la creación del módulo de funciones

8
9
10
2. Web Service.

2.1. Crear Web Service.


Nos posicionamos en la ventana de código, y seleccionamos del menú la siguiente opción
Utilidades -> Mas utilidades -> Generar servicio WEB -> Del grupo de funciones.

Se abrirá la siguiente pantalla para definir el nombre del servicio y una descripción. Una vez
terminado damos clic en continuar.

11
En la siguiente pantalla solo damos clic en continuar.

A continuación nos aparecerán las funciones de las que se compone el grupo nos
aseguramos de que estén seleccionadas todas y damos clic en continuar.

Nos pedirá el nivel de seguridad.

12
En la siguiente pantalla nos pedirá establecer un paquete y la orden de transporte donde se
cargara nuestro servicio WEB, se lo establecemos y damos clic en continuar.

Listo nos mandara la última pantalla donde solo daremos clic en finalizar.

13
Solo esperamos a que se genere el servicio y nos mande la siguiente pantalla, donde
activaremos el servicio.

Para validar que nuestro servicio WEB se haya creado satisfactoriamente ingresamos a la
transacción SOAMANAGER. En la pestaña Administración de servicios iremos a la segunda
y seleccionamos la opción de Web Service Configuration.

14
En la siguiente pantalla seleccionamos que queremos buscar Servicios le establecemos el
nombre de nuestro servicio.

15
2.2. Configurar Web Service.

En la última pantalla de la sección anterior en el SOAMANAGER,


seleccionamos nuestro Servicio web, con doble click, para comenzar
con la configuración.

En la siguiente pantalla seleccionamos que queremos crear un servicio, esto nos llevará a un
RoadMap de configuración

En el primer paso de la configuración asignamos un nombre y descripción, así como un


nombre para el exterior, al finalizar seleccionamos next, para pasar a la siguiente
configuración.

16
Continuamos con el segundo paso, donde solo marcaremos la opción de autentificación
“User ID/Password ”, presionamos next.

Continuamos en el tercer paso, donde no realizamos configuraciones, pasado al último paso.

17
En el último paso, seleccionamos la operación de la que queremos generar el servicio web,
damos click en finalizar.

Nos mostrará como resultado un servicio web ya activo.

Seleccionamos la opción Open Bindings Binding WSDL generation.

En la ventana mostrada en la sección de WDLS Generation, ejecutamos el WSDL.

18
Al ejecutar el WSLD se muestra lo siguiente, es el documento WSDL que nos permite leer el
servicio en un sistema externo que tenga la necesidad de realizar la petición de nuestro
servicio web.

Por último, guardamos el documento WSDL dando click derecho en la pantalla,


seleccionando la opción guardar como, es importante recordar la ruta de donde se guarda el
archivo para futuras configuraciones.

19
20
3. Consumir Web Service.
Para simular el consumo del web service utilizaremos la herramienta SoapUI
(https://www.soapui.org/downloads/soapui/), descargamos e instalamos la aplicación. Dentro de
la aplicación, en el menú seleccionamos File -> New SOAP Project.

En la siguiente ventana con la ayuda de la opción Browse, buscamos y abrimos el archivo


guardado en la sección anterior, presionamos en OK.

21
Después de crear el proyecto en el panel izquierdo seleccionamos seleccionamos la firma
generada por la herramienta, nos mostrará la firma necesaria para generar la petición al
servicio web.

En la sección inferior de la pantalla en pestaña Auth, desplegando la lista seleccionamos la


opción Add New Authorization. Posteriormente seleccionamos el tipo en Basic

22
A hora en la pestana pestaña Auth se muestra un formulario donde introduciremos el usuario
y contraseña del sistema Sap.

23
Por último, asignamos los parámetros en la firma, en este caso el Web service es una
calculadora, introducimos los dos números y el tipo de operación, ejecutamos, obteniendo el
resultado el la pantalla de la derecha.

24
TODO LO QUE NECESITAS AL ALCANCE DE TU MANO

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Detalles_Servicio.Activity_Detalles_Servicio">

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"

25
android:background="@color/primaryColor"
android:theme="@style/AppThemeCustomToolbar"
app:titleTextColor="@android:color/white"
app:popupTheme="@style/AppThemeCustomMenuToolbar"/>

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primaryTextColor">

<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/id_favorito_d"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:visibility="gone"/>
<TextView
android:id="@+id/id_servicio_d"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:visibility="gone"/>

<ImageView
android:id="@+id/iV_foto_prestador"
android:layout_width="match_parent"
android:layout_height="260dp"
android:contentDescription="@string/todo"

26
android:scaleType="fitXY"/>

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="-30dp">

<androidx.cardview.widget.CardView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:focusable="true"
android:layout_margin="10dp"
android:foreground="?selectableItemBackground"
app:cardElevation="5dp"
app:cardCornerRadius="1dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/nombre_prestador"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="6dp"
android:background="@drawable/bg_etiqueta_nombre"
android:gravity="center"
android:textAlignment="center"
android:text="@string/nombre"
android:textColor="@color/primaryTextColor"
android:textSize="20sp" />

<TextView
android:id="@+id/txt_descripcion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"

27
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textAlignment="textStart"
android:textSize="16sp" />

<View
android:id="@+id/div_descripcion"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider" />

<RatingBar
android:id="@+id/rb_calificacion"
style="@android:style/Widget.Material.Light.RatingBar.Indicator"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:isIndicator="true"
android:numStars="5"
android:stepSize="10"
android:theme="@style/RatingBar.Yellow" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingStart="50dp"
android:paddingTop="5dp"
android:paddingEnd="50dp"
android:paddingBottom="5dp">

<ImageButton
android:id="@+id/btn_llamar"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/btn_bordes_redondeados_verde"

28
android:contentDescription="@string/todo"
app:srcCompat="@drawable/ic_phone_white" />

<Space
android:id="@+id/espacio_contactar"
android:layout_width="20dp"
android:layout_height="wrap_content"

/>

<ImageButton
android:id="@+id/btn_whatsapp"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/btn_bordes_redondeados_verde"
android:contentDescription="@string/todo"
android:cropToPadding="false"
app:srcCompat="@drawable/ic_whatsapp"/>

</LinearLayout>

</LinearLayout>
</androidx.cardview.widget.CardView>
</RelativeLayout>
<View
android:id="@+id/div_habilidades"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider"
android:visibility="gone"/>

<TextView
android:id="@+id/titulo_habilidades"
style="@style/etiqueta_titulo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/habilidades" />

29
<TextView
android:id="@+id/txt_habilidades"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textSize="16sp" />

<View
android:id="@+id/div_formacion"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_formacion"
style="@style/etiqueta_titulo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/formacion" />

<TextView
android:id="@+id/txt_formacion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textSize="16sp" />

<View
android:id="@+id/div_ubicacion"
android:layout_width="wrap_content"

30
android:layout_height="1dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_ubicacion"
style="@style/etiqueta_titulo"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/titulo_ubicacion_local" />

<androidx.cardview.widget.CardView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:focusable="true"
android:foreground="?selectableItemBackground"
app:cardElevation="0dp"
app:cardCornerRadius="5dp"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp">

<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="210dp"
android:layout_gravity="center_horizontal"
tools:context="com.alfasolucionesti.chamby.Detalles_Servicio.Activity_Detalles
_Servicio" />
</androidx.cardview.widget.CardView>
<View
android:id="@+id/div_formas_pago"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="?android:attr/listDivider" />

31
<TextView
android:id="@+id/titulo_formas"
style="@style/etiqueta_titulo"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:gravity="center_horizontal"
android:text="@string/titulo_formas_pago" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_marginStart="50dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="50dp"
android:foregroundGravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="horizontal">

<ImageView
android:id="@+id/img_tarjeta"
android:layout_width="100dp"
android:layout_height="50dp"
android:contentDescription="@string/todo"
android:src="@drawable/img_tarjeta" />

<Space
android:id="@+id/espacio_pagos"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />

<ImageView
android:id="@+id/img_efectivo"
android:layout_width="100dp"
android:layout_height="50dp"
android:contentDescription="@string/todo"
android:src="@drawable/img_efectivo"

/>

32
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_marginStart="50dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="50dp"
android:layout_marginBottom="10dp"
android:foregroundGravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="horizontal">

<TextView
android:id="@+id/txt_tarjeta"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/txt_tarjeta" />

<Space
android:id="@+id/espacio_txt_pagos"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />

<TextView
android:id="@+id/txt_efectivo"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal"
android:text="@string/txt_efectivo" />
</LinearLayout>

<View
android:id="@+id/div_galeria"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginTop="5dp"

33
android:layout_marginBottom="5dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_galeria"
style="@style/etiqueta_titulo"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/titulo_galeria" />

<androidx.cardview.widget.CardView
android:id="@+id/item_categoria"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:foreground="?selectableItemBackground"
android:layout_margin="2dp"
app:cardElevation="10dp"
app:cardCornerRadius="15dp"
>

<ImageView
android:id="@+id/imagen_galeria"
android:layout_width="260dp"
android:layout_height="260dp"
android:contentDescription="@string/todo"
tools:srcCompat="@tools:sample/avatars" />

</androidx.cardview.widget.CardView>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:isScrollContainer="false"
android:paddingStart="5dp"
android:paddingEnd="5dp"

34
android:scrollbarAlwaysDrawHorizontalTrack="false"
android:scrollbars="horizontal">
</androidx.recyclerview.widget.RecyclerView>

<View
android:id="@+id/div_coment"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_coment"
style="@style/etiqueta_titulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/titulo_cal_com" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingStart="5dp"
android:paddingEnd="5dp">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/calificacion_total"
android:layout_width="wrap_content"

35
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/calificacion"
android:textSize="45sp" />

<RatingBar
android:id="@+id/ratingBar2"
style="@style/Widget.AppCompat.RatingBar.Indicator"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:numStars="5"
android:stepSize="10"
android:theme="@style/RatingBar.Yellow" />

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="gone" />
</LinearLayout>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:orientation="horizontal">

<TextView
android:id="@+id/txt_indicador_coment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:textSize="16sp" />

<TextView
android:id="@+id/txt_cantidad_comentarios"

36
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp" />
</LinearLayout>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvComentarios"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:isScrollContainer="false"
android:paddingStart="5dp"
android:paddingTop="5dp"
android:paddingEnd="5dp"
tools:itemCount="3" />

<Button
android:id="@+id/btn_todos_comentarios"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/boton_blanco"
android:onClick="onClickMostrarTodos"
android:text="@string/ver_todos_coment"
android:textAllCaps="false"
android:textColor="@color/primaryColor"
android:textSize="14sp" />

</LinearLayout>

</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

37
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Detalles_Servicio.Activity_Detalles_Servicio">

<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/primaryColor"
android:theme="@style/AppThemeCustomToolbar"
app:titleTextColor="@android:color/white"
app:popupTheme="@style/AppThemeCustomMenuToolbar"/>

<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primaryTextColor">

<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/id_favorito_d"

38
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:visibility="gone"/>
<TextView
android:id="@+id/id_servicio_d"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:visibility="gone"/>

<ImageView
android:id="@+id/iV_foto_prestador"
android:layout_width="match_parent"
android:layout_height="260dp"
android:contentDescription="@string/todo"
android:scaleType="fitXY"/>

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="-30dp">

<androidx.cardview.widget.CardView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:focusable="true"
android:layout_margin="10dp"
android:foreground="?selectableItemBackground"
app:cardElevation="5dp"
app:cardCornerRadius="1dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/nombre_prestador"

39
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="6dp"
android:background="@drawable/bg_etiqueta_nombre"
android:gravity="center"
android:textAlignment="center"
android:text="@string/nombre"
android:textColor="@color/primaryTextColor"
android:textSize="20sp" />

<TextView
android:id="@+id/txt_descripcion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textAlignment="textStart"
android:textSize="16sp" />

<View
android:id="@+id/div_descripcion"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider" />

<RatingBar
android:id="@+id/rb_calificacion"
style="@android:style/Widget.Material.Light.RatingBar.Indicator"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:isIndicator="true"
android:numStars="5"
android:stepSize="10"
android:theme="@style/RatingBar.Yellow" />

<LinearLayout

40
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_marginBottom="10dp"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingStart="50dp"
android:paddingTop="5dp"
android:paddingEnd="50dp"
android:paddingBottom="5dp">

<ImageButton
android:id="@+id/btn_llamar"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/btn_bordes_redondeados_verde"
android:contentDescription="@string/todo"
app:srcCompat="@drawable/ic_phone_white" />

<Space
android:id="@+id/espacio_contactar"
android:layout_width="20dp"
android:layout_height="wrap_content"

/>

<ImageButton
android:id="@+id/btn_whatsapp"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/btn_bordes_redondeados_verde"
android:contentDescription="@string/todo"
android:cropToPadding="false"
app:srcCompat="@drawable/ic_whatsapp"/>

</LinearLayout>

</LinearLayout>
</androidx.cardview.widget.CardView>
</RelativeLayout>
<View

41
android:id="@+id/div_habilidades"
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="?android:attr/listDivider"
android:visibility="gone"/>

<TextView
android:id="@+id/titulo_habilidades"
style="@style/etiqueta_titulo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/habilidades" />

<TextView
android:id="@+id/txt_habilidades"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textSize="16sp" />

<View
android:id="@+id/div_formacion"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_formacion"
style="@style/etiqueta_titulo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"

42
android:layout_marginBottom="10dp"
android:text="@string/formacion" />

<TextView
android:id="@+id/txt_formacion"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:textSize="16sp" />

<View
android:id="@+id/div_ubicacion"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_ubicacion"
style="@style/etiqueta_titulo"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/titulo_ubicacion_local" />

<androidx.cardview.widget.CardView
android:layout_height="match_parent"
android:layout_width="match_parent"
android:focusable="true"
android:foreground="?selectableItemBackground"
app:cardElevation="0dp"
app:cardCornerRadius="5dp"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp">

<fragment

43
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="210dp"
android:layout_gravity="center_horizontal"
tools:context="com.alfasolucionesti.chamby.Detalles_Servicio.Activity_Detalles
_Servicio" />
</androidx.cardview.widget.CardView>
<View
android:id="@+id/div_formas_pago"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_formas"
style="@style/etiqueta_titulo"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:gravity="center_horizontal"
android:text="@string/titulo_formas_pago" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_marginStart="50dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="50dp"
android:foregroundGravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="horizontal">

<ImageView
android:id="@+id/img_tarjeta"
android:layout_width="100dp"
android:layout_height="50dp"
android:contentDescription="@string/todo"

44
android:src="@drawable/img_tarjeta" />

<Space
android:id="@+id/espacio_pagos"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1" />

<ImageView
android:id="@+id/img_efectivo"
android:layout_width="100dp"
android:layout_height="50dp"
android:contentDescription="@string/todo"
android:src="@drawable/img_efectivo"

/>
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_marginStart="50dp"
android:layout_marginTop="5dp"
android:layout_marginEnd="50dp"
android:layout_marginBottom="10dp"
android:foregroundGravity="center_horizontal"
android:gravity="center_horizontal"
android:orientation="horizontal">

<TextView
android:id="@+id/txt_tarjeta"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/txt_tarjeta" />

<Space
android:id="@+id/espacio_txt_pagos"
android:layout_width="0dp"
android:layout_height="wrap_content"

45
android:layout_weight="1" />

<TextView
android:id="@+id/txt_efectivo"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal"
android:text="@string/txt_efectivo" />
</LinearLayout>

<View
android:id="@+id/div_galeria"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_galeria"
style="@style/etiqueta_titulo"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/titulo_galeria" />

<androidx.cardview.widget.CardView
android:id="@+id/item_categoria"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
android:foreground="?selectableItemBackground"
android:layout_margin="2dp"
app:cardElevation="10dp"
app:cardCornerRadius="15dp"
>

<ImageView
android:id="@+id/imagen_galeria"
android:layout_width="260dp"

46
android:layout_height="260dp"
android:contentDescription="@string/todo"
tools:srcCompat="@tools:sample/avatars" />

</androidx.cardview.widget.CardView>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:isScrollContainer="false"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:scrollbarAlwaysDrawHorizontalTrack="false"
android:scrollbars="horizontal">
</androidx.recyclerview.widget.RecyclerView>

<View
android:id="@+id/div_coment"
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="?android:attr/listDivider" />

<TextView
android:id="@+id/titulo_coment"
style="@style/etiqueta_titulo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@string/titulo_cal_com" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"

47
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingStart="5dp"
android:paddingEnd="5dp">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

<TextView
android:id="@+id/calificacion_total"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/calificacion"
android:textSize="45sp" />

<RatingBar
android:id="@+id/ratingBar2"
style="@style/Widget.AppCompat.RatingBar.Indicator"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:numStars="5"
android:stepSize="10"
android:theme="@style/RatingBar.Yellow" />

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="gone" />
</LinearLayout>

</LinearLayout>

<LinearLayout

48
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:orientation="horizontal">

<TextView
android:id="@+id/txt_indicador_coment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:textSize="16sp" />

<TextView
android:id="@+id/txt_cantidad_comentarios"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp" />
</LinearLayout>

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvComentarios"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:isScrollContainer="false"
android:paddingStart="5dp"
android:paddingTop="5dp"
android:paddingEnd="5dp"
tools:itemCount="3" />

<Button
android:id="@+id/btn_todos_comentarios"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

49
android:layout_gravity="end"
android:layout_marginTop="5dp"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/boton_blanco"
android:onClick="onClickMostrarTodos"
android:text="@string/ver_todos_coment"
android:textAllCaps="false"
android:textColor="@color/primaryColor"
android:textSize="14sp" />

</LinearLayout>

</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>

50

También podría gustarte