Kılavuzdaki öğeler arasında boşluk oluşturmak istiyorum. Öğelerin hepsi eşit genişliğe/yüksekliğe sahip olmalıdır.GridLayout öğelerine ofset uygulayın ve tüm öğeler arasında eşit boyutu koruyun
denedim Ne:
bir all ızgara kalemlere ofset uygulayan bir GridLayoutOffsetDecorator
oluşturun:
class GridLayoutOffsetDecorator(var offset: Int) : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State?) {
super.getItemOffsets(outRect, view, parent, state)
outRect.set(offset, offset, offset, offset)
}
}
bir 8dp
ofset olması öğeleri arasında bir 16dp
boşluk yaratır. Yani hala dış kenarlarına dolgu 8dp
uygulamak zorunda:
<android.support.v7.widget.RecyclerView
android:id="@+id/productList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:padding="8dp" />
sonucudur:
Sorun:
Hafif bir fark dikkat edin Mavi çizgiye baktığınızda yükseklikte. Bu fark, yalnızca geri bildirim görüntüsünü doldurduktan sonra görünür. Bu dolgu bazı öğelerin birazını yeniden boyutlandırıyor gibi görünüyor. Bu problemle ilgili deneyimleriniz var mı? Bunun nasıl çözülebileceği hakkında bir fikrin var mı?
Görüntüyü öğelerden kaldırarak yükseklik farkı kaybolur. Bu görüntü ayarlanır nasıl:
<SquareImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
app:imageResource="@{product.image}" />
SquareImageView:
class SquareImageView : ImageView {
constructor(context: Context) : super(context)
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec)
}
}
Yani sorun görüntünün kendisi neden olabilir.
Yükseklik farklılıkları nerede oluşur? tüm öğelerinizde bir fark var mı, yoksa yalnızca 0'daki tüm öğeler diğerlerinden daha yüksek midir? – W3hri
@ W3hri yükseklik farkı bir veya iki öğedir fakat hiçbir zaman hiç etkilenmez, etkilenen öğelerin konumu rastgele –
İlk tahminim, kümesini ortadaki kırpmaya benzeyen ImageView'ın bazı sorunlara neden olmasıydı. Sadece metin içeren öğelerde de oluyor mu? – W3hri