Вопрос

Я пытаюсь настроить макет, чтобы у него есть изображение с регионами.Эти регионы могут иметь либо другие ImageView или TextView.Я могу достичь этого на высоком уровне с использованием Framelayout и RelativeLayout.Однако он не масштабируется должным образом на разных устройствах.

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

Yellow/Red Region - ImageView setup dynamically
Blue/Green Region - TextView
.

Так на устройстве, я хочу, чтобы это выглядеть так:

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

И, как это:

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

Обратите внимание, что изображения изображений правильно, и поэтому дочерние виды в правильных регионах. Может кто-нибудь, пожалуйста, поделитесь некоторыми идеями о том, как это может быть достигнуто?

Это было полезно?

Решение

Я смог сделать это, написав пользовательский вид.Я устанавливаю облигации макета на основе смещения%. Например, изображение начнется с 15% сверху, а 10% скидка влево и ширина составляет 30% размера карты и т. Д. Я проверил это несколькими устройствами и до сих пор работает как разработан.

Другие советы

Посмотрите на Поддержка различных размеров экрана >

также посмотрите на Поддержка нескольких экранов >

Эта ссылка имеет именно то, что вы ищете.Следуйте примеру, и вы достигнете желаемого результата.

Эти учебные пособия объясняют, как масштабировать изображения на основе размеров экрана и как создать свой макет.

Извлечение из сайт Google DEV : -

    .
  • Явно объявляю в манифесте, на каком экране размеры ваша приложение поддерживает
  • Обеспечить различные макеты для разных размеров экрана
  • Предоставить разные растровые рисунки для разных плотностей экрана

Используйте onconfigurationChanged (), чтобы определить ориентацию и изменяет представления в соответствии с вашими требованиями

public override void OnConfigurationChanged(Android.Content.Res.Configuration newConfig)
{ 
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){

    //Change the Layout width and height attributes according to your requirements
    Log.e("On Config Change","LANDSCAPE");
    }else{
    //Change the Layout width and height attributes according to your requirements
    Log.e("On Config Change","PORTRAIT");
    }

   base.OnConfigurationChanged(newConfig);

 }
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top