From 7daefdf63a5454f2aed3b0f5dd0039b11a371610 Mon Sep 17 00:00:00 2001 From: Malte Schmitz Date: Sat, 17 Feb 2018 18:53:30 +0100 Subject: [PATCH] Improve landscape layout and fix columnCount update logic --- app/src/main/java/de/mlte/soundboard/MainActivity.kt | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/de/mlte/soundboard/MainActivity.kt b/app/src/main/java/de/mlte/soundboard/MainActivity.kt index 617d7ae..3e38843 100644 --- a/app/src/main/java/de/mlte/soundboard/MainActivity.kt +++ b/app/src/main/java/de/mlte/soundboard/MainActivity.kt @@ -4,6 +4,7 @@ import android.animation.ValueAnimator import android.app.Activity import android.content.Context import android.content.Intent +import android.content.res.Configuration.ORIENTATION_LANDSCAPE import android.media.MediaPlayer import android.net.Uri import android.os.Bundle @@ -111,14 +112,27 @@ class MainActivity : AppCompatActivity() { } private fun organizeButtons() { + val orientation = resources.configuration.orientation + val cols = if (orientation == ORIENTATION_LANDSCAPE) + Math.ceil(buttons.size / 2.0).toInt() + else + Math.ceil(buttons.size / 4.0).toInt() + val columns = Math.max(Math.min(cols, 4), 1) + val parent = findViewById(R.id.grid_layout) - val columns = Math.max(Math.min(Math.ceil(buttons.size / 4.0).toInt(), 4), 1) - parent.columnCount = columns + + // every column index used by a button must always be lower than columnCount + if (columns > parent.columnCount) { + parent.columnCount = columns + } + buttons.forEachIndexed { index, soundButton -> val col = index % columns val row = index / columns soundButton.move(col, row) } + + parent.columnCount = columns } private fun addButton(soundButton: SoundButton) {