Наличие ImageView в виде страниц внутри ViewPager: поиск возможного подхода при изменении ширины страницы
У меня есть ViewPager, который показывает предыдущую и следующую страницу, но я хочу изменить границы невыбранных страниц и сделать эти страницы меньше.
Эти изображения показывают границы макета этих страниц:
Мне нужно уменьшить ширину страницы для грибов и груш.
getPageWidth
Метод был единственным вариантом, который я имел в виду:
override fun getPageWidth(position: Int): Float {
val absPosition = Math.abs(position - startOffset)
return if (absPosition >= 1) {
0.5f
} else {
0.9f
}
}
Это изменит ширину элементов 1 & 2 до 0,9 и изменит ширину элементов 0 & >2'на 0,5. Мне нужно оставить показанный элемент в покое и удалить поле для остальных страниц.
Коды, которые важны:
override fun instantiateItem(container: ViewGroup, position: Int): Any {
val img = LayoutInflater.from(this@PagerActivity).inflate(R.layout.profile_image_card, container, false) as ImageView
img.setImageResource(imageIds[position])
container.addView(img)
if (imageIds[position] == R.drawable.choose) {
img.setOnClickListener {
Log.d("PAGER_PARADISE", "clicked on choose image")
//TODO: select from gallery
}
}
img.setOnClickListener {
profilePager?.currentItem = position
}
return img
}
преобразователь страницы (показывая другие элементы меньше:
override fun transformPage(page: View, position: Float) {
val absPosition = Math.abs(position - startOffset)
if (absPosition >= 1) {
//page.setElevation(baseElevation);
page.scaleY = smallerScale
page.scaleX = smallerScale
} else {
// This will be during transformation
//page.setElevation(((1 - absPosition) * raisingElevation + baseElevation));
page.scaleX = (smallerScale - 1) * absPosition + 1
page.scaleY = (smallerScale - 1) * absPosition + 1
}
}
Это изображение (сделанное с помощью графических редакторов) может помочь увидеть фактический желаемый результат:
РЕДАКТИРОВАТЬ:
Когда я установил pageMargin
к отрицательному значению (например, -18), они приближаются, но из-за большего размера currentItem
, Он выглядит разбитым и смещенным (зазор между центральными элементами буксира меньше, чем у других)