#android #imageview #orientation #landscape
#Android #просмотр изображений #ориентация #пейзаж
Вопрос:
У меня есть набор из 10 видов изображений, которые необходимо установить в верхней части экрана. В портретном режиме он идеально подходит в соответствии с требованиями. Но когда я меняю ориентацию экрана на альбомную, количество изображений остается прежним, но по ширине не соответствует макету. Я имею в виду, что набор из 10 изображений заполняет только 50% экрана.
Я пробовал много разных способов, но все же я не могу сделать это для ландшафта
Вот мой XML-файл main.xml
<RelativeLayout android:id="@ id/relativeLayout1"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_alignParentTop="true"
android:id="@ id/progresslayout"
android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb1"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_alignParentLeft="true"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb4"
android:layout_toRightOf="@ id/pb3" android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb5"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb6"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb7"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb8"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb9"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
<ImageView android:src="@drawable/progressgreen" android:id="@ id/pb10"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageView>
</LinearLayout>
</RelativeLayout>
Я попытался также предоставить свойство android:layout_weight=» «, но все равно бесполезно. И интересная вещь, которую я заметил здесь, это то, что вместо просмотра изображения, если я попробую то же самое с помощью какой-либо кнопки или редактирования текста, он отлично работает как для портретной, так и для альбомной ориентации
Комментарии:
1. ширина и высота вашего линейного представления также должны быть такими, как android:layout_width=»fill_parent» android:layout_height=»fill_parent»
2. @Падма Кумар, я пробовал это
Ответ №1:
Вот и все
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@ id/progresslayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:orientation="horizontal" >
<ImageView
android:id="@ id/pb1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb6"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb7"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb8"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb9"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
<ImageView
android:id="@ id/pb10"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/ic_launcher" >
</ImageView>
</LinearLayout>
android:src="@drawable/ic_launcher"
Не забудьте заменить свой ресурс изображения. Это создаст десять изображений поверх экрана, красиво расположенных друг между другом.
Если вам не нужен пробел между изображениями, используйте android:scaleType="fitXY"
свойство для каждого изображения. Удачи.
Комментарии:
1. Я пробовал это. В этом случае изображения подходят, но изображение не видно. Если я задам вес как 0 или 0,2 вместо 1, то изображения появятся, но не будут соответствовать макету
2. Вы пробовали с другими изображениями? Я протестировал перед публикацией здесь.
3. Да, я пробовал с другими изображениями. Это происходит только для представлений изображений, для таких полей, как редактировать текст или кнопка, это работает
4. Я имел в виду этот ресурс
@drawable/progressgreen
. В моем коде я использую@drawable/ic_launcher
. Работает нормально.5. Да, я понял, но для меня это остается таким же, как и раньше. Изображение не отображается, если я задаю вес как 1, но я вижу наличие изображений. Вы пробовали ровно с 10 наборами изображений. Потому что я хочу, чтобы одинаковое количество изображений соответствовало макету как в портретном, так и в альбомном режимах
Ответ №2:
В теге Linearlayout удалить
android: ориентация = «горизонтальная»
атрибут и изменение
android:layout_width=»wrap_content»
Попробуйте
Ответ №3:
Попробуйте использовать android:layout_weight="1"
и android:layout_width="fill_parent"
. Это гарантирует, что все объекты будут иметь общую ширину макета, и каждый из них занимает одинаковое пространство.
Ответ №4:
Попробуйте,
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@ id/relativeLayout1"
android:weightSum="2"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@ id/progresslayout"
android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:weightSum="10"
android:orientation="horizontal" >
// Your ImageViews Here
<ImageView
android:id="@ id/pb10"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:src="@drawable/image1" >
</ImageView>
</LinearLayout>
</LinearLayout>
Комментарии:
1. родительским элементом внутреннего линейного макета должен быть только относительный макет
2. могу ли я узнать, почему это необходимо? и вы говорите о макете, содержащем 10 изображений?
3. Нет, я говорю о самой внешней линейной компоновке, которая содержит внутреннюю компоновку. Это всего лишь часть всего макета. Многие другие вещи связаны с внешним относительным расположением, поэтому необходимо
4. затем поместите относительную компоновку над этим внешним линейным макетом, что означает сохранение того же кода, напишите RelativeLayout сверху и укажите height width fill_parent