2013-05-08 5 views
0

У меня есть этот код и требуется следующая позиция изображений. Но поскольку я использовал Relative Layout, & Изображения не правильно выравниваются во всех устройствах, некоторые из них перекрывают изображения. Редактировать: Главное требование: В моем требовании я хочу щелкнуть зеленую крышку. Итак, если я нажму красную крышку, то ImageView исчезнет. Итак, оставшиеся два изображения должны быть в одном месте. Так что если я использую layout_weight, он покрывает оставшиеся два изображения на оставшееся пространство. Как я могу получить лучший результат для этого требования.Отображение изображений на макете

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#657383" 
android:orientation="horizontal" > 



<RelativeLayout 
    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:clickable="true" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:contentDescription="@string/app_name" /> 

<ImageView 
    android:id="@+id/imageView2" 
    android:layout_centerInParent="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:contentDescription="@string/app_name" /> 

<ImageView 
    android:id="@+id/imageView3" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:contentDescription="@string/app_name" /> 


Model Image

Спасибо.

ответ

1

Вы можете использовать LinearLayout с атрибутом android:layout_weight. установите атрибут layout_weight для всех ImageView. При этом все ImageView будет занимать одно и то же место. Кроме того, использование android:scaleType="fitXY"

, например, если я считаю редактирование кода ... (Только сочинительство здесь, так что могут быть незначительные ошибки)

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


    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:scaleType="fitXY" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:contentDescription="@string/app_name" /> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_centerInParent="true" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:scaleType="fitXY" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:contentDescription="@string/app_name" /> 

<ImageView 
    android:id="@+id/imageView3" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true"  
    android:layout_width="0dip" 
    android:layout_weight="1" 
    android:scaleType="fitXY" 
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:contentDescription="@string/app_name" /> 
+1

горизонтальный LinearLayour с layout_widht = "0dip". +1 – Blackbelt

+0

Пожалуйста, проверьте отредактированный вопрос. – sai

+0

просто используйте android: visibility = "gone", когда вам нужно сделать это невидимым – stinepike

0

Попробуйте

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#657383" 
    android:orientation="horizontal" > 
    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:layout_weight="1" 
     android:src="@drawable/ic_launcher" 
     android:contentDescription="@string/app_name" /> 

    <ImageView 
     android:id="@+id/imageView2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:layout_weight="1" 
      android:src="@drawable/ic_launcher" 
     android:contentDescription="@string/app_name" /> 

    <ImageView 
     android:id="@+id/imageView3" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:layout_weight="1" 
     android:src="@drawable/ic_launcher" 
     android:contentDescription="@string/app_name" /> 

    </LinearLayout> 
+0

Пожалуйста, проверьте отредактированный вопрос. – sai

+0

Используйте View.INVISIBLE вместо View.GONE –

1

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

android:layout_toRightOf="" // specify id of image-view 
android:layout_toLeftOf="" // specify id of image-view 

в поле значений u необходимо указать идентификатор изображения

0

RelativeLayout является избыточным. Вы можете просто установить линейную компоновку центра:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:background="#657383" 
    android:orientation="horizontal" > 
    <ImageView 
     ... 

Обратите внимание на дополнительные линии android:layout_gravity="center" и android:gravity="center"

0

Если вы хотите изображения не перекрывают друг друга, вы должны использовать меньшие изображения на устройствах с меньшим экраном. Вы можете использовать drawable-large- * dpi и xlarge-dpi или drawable-sw ** dp- * dpi папки для увеличения изображений и drawable- * dpi для телефонов.

КПП. Вам не нужно, чтобы LinearLayout обертывал все.

Смежные вопросы