Подтвердить что ты не робот

Android: центр изображения

У меня есть линейный макет и изображение...

<?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">

<ImageView android:layout_width="wrap_content" android:id="@+id/imageView1"
 android:src="@drawable/icon" android:layout_height="wrap_content"
 android:scaleType="center"></ImageView>

</LinearLayout>

Как мне динамически центрировать мое изображение так, чтобы оно отображалось в центре экрана на всех устройствах?

4b9b3361

Ответ 1

В LinearLayout используйте: android:layout_gravity="center".

В RelativeLayout используйте: android:layout_centerInParent="true".

Ответ 2

Если вы используете LinearLayout, используйте атрибут gravity:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ImageView android:layout_width="wrap_content"
        android:id="@+id/imageView1"
        android:src="@drawable/icon"
        android:layout_height="wrap_content"
        android:scaleType="centerInside" />
</LinearLayout>

Если вы используете RelativeLayout, вы можете использовать android:layout_centerInParent следующим образом:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon"
        android:scaleType="centerInside"
        android:layout_centerInParent="true" />

</RelativeLayout>

Ответ 3

Технически оба ответа выше правильны, но поскольку вы устанавливаете свой ImageView на fill_parent вместо wrap_content, изображение внутри не центрировано, но сам ImageView.

Дайте вашему ImageView атрибуты:

android:scaleType="centerInside"
android:gravity="center"

Значение scaleType действительно необходимо только в этом случае, если изображение превышает размер ImageView. Вам также могут понадобиться различные типы scaleTypes. В заключение, android:gravity - это то, что вы ищете в этом случае, но если ваш ImageView установлен на wrap_content, вы должны установить гравитацию ImageView (android:layout_gravity), чтобы она была центрирована внутри родителя.

Ответ 4

Просто добавьте это в свой ImageView.

android:layout_gravity="center" 

Ответ 5

Вот два способа центрирования изображения (или изображений) как по вертикали, так и по горизонтали в LinearLayout.

(1) Используйте атрибут android: layout_gravity = "center" в ImageView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"> 
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        layout_height="wrap_content"
        android:src="@drawable/icon"
        android:layout_gravity="center"/>
</LinearLayout>

Как это работает: атрибут android: layout_gravity = "center" в центрах ImageView (т.е. изображение) по вертикали и по горизонтали относительно его родителя (LinearLayout).

- ИЛИ -

(2) В качестве альтернативы вы можете использовать атрибут android: gravity = "center" в LinearLayout и опустить атрибут android: layout_gravity = "center" в ImageView:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"> 
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        layout_height="wrap_content"
        android:src="@drawable/icon"
        android:layout_gravity="center"/>
</LinearLayout>

Как это работает: атрибут android: gravity = "center" в центрах LinearLayout его дочерний/дочерний (в данном случае это изображение) по вертикали и по горизонтали.

Ответ 6

Другой метод. (in Relative test, но я думаю, что в Linear также будет работать)

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:adjustViewBounds="true"
    android:gravity="center"

Если вы используете Eclipse, вы можете выбрать графический макет, когда *.xml файл активен. Наверху вы найдете Структуру и параметр Adjust View Bounds. Он сократит все размеры псевдокадра (синий прямоугольник) до размера вашего файла.

См. также параметр scaleType, чтобы сделать смешной ваш образ. Попробуйте в Eclipse;)

Ответ 7

Это сработало для меня

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/Logo"
            android:gravity="center"
            android:scaleType="centerInside"
            android:src="@drawable/logo" />

    </LinearLayout>

Ответ 8

Вы также можете использовать это,

android:layout_centerHorizontal="true"

Изображение будет помещено в центр экрана

Ответ 9

попробуйте это.

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:gravity="center"
    android:orientation="horizontal" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:scaleType="centerInside"
        android:src="@drawable/logo" />

</LinearLayout>    

Ответ 10

Что это для меня было

LinearLayout
     RelativeLayout
          <ImageView
              width... 
              height..
     --->     android:layout_centerHorizontal="true"

ура!

Ответ 11

Прежде всего, вам нужно использовать "match_parent" и не использовать "fill_parent" в объявлении LinearLayout, вы можете проверить "официальный документация "здесь https://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#MATCH_PARENT Еще одно замечание состоит в том, что вам нужно использовать ImageView в качестве дочернего элемента, а затем использовать ImageView для самозакрывания; это означает, что он должен заканчиваться на "/" > ". Затем позвольте мне показать вам несколько быстрых идей: 1- Как естественный способ

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"    
android:layout_width="match_parent"
android:layout_height="match_parent"
><ImageView 
android:layout_width="wrap_content" 
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:src="@drawable/ocean" android:scaleType="center"/> </LinearLayout>

Тогда выглядит введите описание изображения здесь 2- Вы могли бы импровизировать быстро

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
/><ImageView 
android:layout_width="match_parent" 
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:scaleType="center"/><ImageView 
android:layout_width="match_parent" 
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:src="@drawable/ocean"
android:scaleType="center"/>
<ImageView 
android:layout_width="match_parent" 
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:background="#ffffff"
android:scaleType="center"/></LinearLayout>

И затем выглядит как

введите описание изображения здесь

3- Другие идеи могут родиться таким образом, например, этот

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"    
android:layout_width="match_parent"
android:layout_height="match_parent"
><ImageView 
android:layout_width="300dp" 
android:layout_height="80dp"
android:id="@+id/imageView1"
/><ImageView 
android:layout_width="300dp" 
android:layout_height="80dp"
android:id="@+id/imageView1"
android:src="@drawable/ocean" 
/> 
<ImageView 
android:layout_width="300dp" 
android:layout_height="80dp"
android:id="@+id/imageView1"
/> </LinearLayout>

Lokking, подобный этому

введите описание изображения здесь

Другая возможность

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff"
><ImageView 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ocean"
android:id="@+id/imageView1"
android:scaleType="center"/><ImageView 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:background="#ffffff"
android:scaleType="center"/>
<ImageView 
android:layout_width="match_parent" 
android:layout_height="match_parent"
android:id="@+id/imageView1"
android:background="#ffffff"
    android:src="@drawable/ocean"
android:scaleType="center"/></LinearLayout>

введите описание изображения здесь

Как мы видели, вы можете использовать "скрытые пространства" или "пробелы с цветом фона", чтобы быстро решить некоторые проблемы, очевидно, это не всегда возможно.

Ответ 12

измените вес макета по вашему желанию....

Введите это:

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_weight="0.03">
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:scaleType="centerInside"
        android:layout_gravity="center"
        android:src="@drawable/logo" />

</LinearLayout>