Android ImageView Поместите другое изображение и текст в регионе
-
21-12-2019 - |
Вопрос
Я пытаюсь настроить макет, чтобы у него есть изображение с регионами.Эти регионы могут иметь либо другие 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);
}
.