studio - validar imageview android
Posicionando una imagen dentro de un ImageView con gravedad: arriba (5)
╔════════════════════════════════════════════════════════╗
║ Linear Layout (Center) ║
║ ╔══════════════════════════════════════════════╗ ║
║ ║ ImageView ╔══════════════╗ ║ ║
║ ║ ║ ║ (Center) ║ ║
║ ║ ║ Actual image ║ ║ ║
║ ║ ║ ║ ║ ║
║ ║ ║ (Center) ║ ║ ║
║ ║ ║ ║ ║ ║
║ ║ ╚══════════════╝ ║ ║
║ ╚══════════════════════════════════════════════╝ ║
║ ║
╚════════════════════════════════════════════════════════╝
Y quiero hacer esto:
╔════════════════════════════════════════════════════════╗
║ Linear Layout (Center) ║
║ ╔══════════════════════════════════════════════╗ ║
║ ║ ImageView ║ ║ ║ ║
║ ║ ║ ║ (Center) ║ ║
║ ║ ║ Actual image ║ ║ ║
║ ║ ║ ║ ║ ║
║ ║ ║ (Top) ║ ║ ║
║ ║ ║ ║ ║ ║
║ ║ ╚══════════════╝ ║ ║
║ ╚══════════════════════════════════════════════╝ ║
║ ║
╚════════════════════════════════════════════════════════╝
Tenga en cuenta que: la vista de la imagen tiene un centro de gravedad con un diseño lineal. Quiero que la imagen de la vista de la imagen tenga la parte superior de la gravedad. Intento establecer la gravedad: la parte superior, pero nada cambia. Ayuadame
Editar: este es mi xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@color/all_white">
<LinearLayout android:id="@+id/title_bar" style="@style/TitleBar">
<TextView android:layout_width="wrap_content"
android:id="@+id/tv_printweb"
android:singleLine="true"
android:ellipsize="end"
style="@style/ScreenTitleText" />
</LinearLayout>
<RelativeLayout android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/tv_web_filename"
android:layout_above="@+id/tv_web_page_num"
android:layout_weight="1"
android:background="@color/background">
<LinearLayout android:id="@+id/ln_web_pre"
android:layout_width="30dp"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:gravity="center">
<Button android:id="@+id/btn_web_pre"
android:layout_width="40dp"
android:layout_height="120dp"
android:background="@drawable/bt_left"
/>
</LinearLayout>
<LinearLayout android:id="@+id/ln_web_zoomview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/all_white"
android:orientation="vertical"
android:gravity="center"
android:layout_centerInParent="true">
<ImageView android:id="@+id/web_zoomview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/all_white"
android:layout_gravity="top"
/>
</LinearLayout>
<LinearLayout android:id="@+id/llCircle"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_marginRight="40dp"
android:layout_marginLeft="40dp"
android:layout_marginBottom="25dp"
android:layout_marginTop="25dp">
</LinearLayout>
<LinearLayout android:id="@+id/ln_web_next"
android:layout_width="30dp"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:gravity="center">
<Button android:id="@+id/btn_web_next"
android:layout_width="40dp"
android:layout_height="120dp"
android:background="@drawable/bt_right_1"
/>
</LinearLayout>
<RelativeLayout android:id="@+id/pagebar_web_top"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:paddingLeft="10dip"
android:paddingRight="10dip">
<TextView android:id="@+id/tv_web_page_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:gravity="center"
android:text="Paper Size"
android:textColor="@color/all_black"
android:textStyle="bold"
android:background="@drawable/paper_border" />
</RelativeLayout>
<RelativeLayout android:id="@+id/web_pagebar"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:gravity="left"
android:paddingLeft="10dip"
android:paddingRight="10dip">
<TextView android:id="@+id/tv_page_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:gravity="center"
android:text="1/1"
android:textColor="@color/all_black"
android:textStyle="bold"
android:background="@drawable/paper_border" />
<Button android:id="@+id/btn_web_orientation"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:background="@drawable/rotate_l" />
</RelativeLayout>
</RelativeLayout>
<LinearLayout android:gravity="right|center_horizontal"
android:id="@+id/toolbar"
style="@style/FunctionBar">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn_web_print"
style="@style/FunctionButton"
android:text="@string/str_print" />
</LinearLayout>
</LinearLayout>
¿Ha intentado usar el atributo android: gravity = "top" ? Veo que para su ImageView está usando android: layout_gravity tal vez podría intentar usar el otro. Que yo sepa, el atributo " android: layout_gravity " se usa para establecer la gravedad del elemento dentro de su elemento principal, mientras que el atributo " android: gravity " es para establecer la gravedad del contenido del elemento. (¡Alguien me corrige si me equivoco! = P jeje!)
¿No sería más fácil usar un RelativeLayout
? Con android:layout_alignParentTop="true"
y android:layout_centerHorizontal="true"
puede lograr el efecto deseado.
Establezca el scaleType
para que se fitStart
en su XML:
<ImageView
android:id="@+id/ivMap"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitStart" >
</ImageView>
Puede usar ImageView.ScaleType.MATRIX
y configurar la matriz de imágenes usando ImageView.setImageMatrix()
. Matrix
se puede obtener utilizando el método Matrix.setRectToRect()
.
Por favor, compruebe la respuesta de Terel, que se dice que es la respuesta correcta.
Dependiendo de lo que haya en el diseño, una solución podría ser usar otro diseño (es decir, un FrameLayout
que sea más bien ligero) en lugar de ImageView
, y tener ImageView
en lugar de la imagen real, con su android:layout_gravity="top"
.