diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateNotetype.kt b/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateNotetype.kt index 7a42a4576198..d0b4362d0216 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateNotetype.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CardTemplateNotetype.kt @@ -111,6 +111,7 @@ class CardTemplateNotetype( /** * Handles everything for a note type change at once - template add / deletes as well as content updates + * This is an extension function on Collection and should be called from within undoableOp */ suspend fun saveNoteType( notetype: NotetypeJson, diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/browser/BrowserMultiColumnAdapter.kt b/AnkiDroid/src/main/java/com/ichi2/anki/browser/BrowserMultiColumnAdapter.kt index 1d914231f2a1..38cda95ac817 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/browser/BrowserMultiColumnAdapter.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/browser/BrowserMultiColumnAdapter.kt @@ -246,6 +246,10 @@ class BrowserMultiColumnAdapter( LayoutInflater .from(parent.context) .inflate(R.layout.card_item_browser, parent, false) + // Set a fixed height to prevent scrollbar jitter, with enough space to show content + val params = view.layoutParams + params.height = (parent.context.resources.displayMetrics.density * 56).toInt() // Increased to 56dp for better visibility + view.layoutParams = params return MultiColumnViewHolder(view) } @@ -275,7 +279,24 @@ class BrowserMultiColumnAdapter( holder.numberOfColumns = row.cellsCount for (i in 0 until row.cellsCount) { - holder.columnViews[i].text = renderColumn(i) + val columnText = renderColumn(i) + holder.columnViews[i].text = columnText + // Add tooltip showing full text when truncated - long press to see full text + holder.columnViews[i].setOnLongClickListener { view -> + android.widget.Toast + .makeText( + context, + "Long text:\n$columnText", + android.widget.Toast.LENGTH_LONG, + ).show() + true + } + // Set content description for accessibility and show hint if text is truncated + holder.columnViews[i].contentDescription = columnText + // Show hint on first view + if (columnText.length > 30) { + holder.columnViews[i].setTooltipText("Long press to see full text") + } } holder.setIsSelected(isSelected) val rowColor = diff --git a/AnkiDroid/src/main/res/layout/browser_column_cell.xml b/AnkiDroid/src/main/res/layout/browser_column_cell.xml index 058b77e7a39c..fdca22d9dca4 100644 --- a/AnkiDroid/src/main/res/layout/browser_column_cell.xml +++ b/AnkiDroid/src/main/res/layout/browser_column_cell.xml @@ -19,6 +19,12 @@ android:layout_height="match_parent" android:layout_weight="1" android:paddingStart="8dp" - android:paddingVertical="1dp" - android:layout_gravity="top" + android:paddingEnd="6dp" + android:paddingVertical="6dp" + android:gravity="center_vertical|start" + android:ellipsize="end" + android:maxLines="2" + android:textColor="?android:attr/textColorPrimary" + android:textSize="14sp" + android:lineSpacingMultiplier="1.1" /> \ No newline at end of file diff --git a/AnkiDroid/src/main/res/layout/card_item_browser.xml b/AnkiDroid/src/main/res/layout/card_item_browser.xml index 0924f6f58a08..efaf38ef9672 100644 --- a/AnkiDroid/src/main/res/layout/card_item_browser.xml +++ b/AnkiDroid/src/main/res/layout/card_item_browser.xml @@ -2,8 +2,9 @@ diff --git a/AnkiDroid/src/main/res/layout/tags_item_list_dialog.xml b/AnkiDroid/src/main/res/layout/tags_item_list_dialog.xml index e7e9d3cf380a..4058689ae1c0 100644 --- a/AnkiDroid/src/main/res/layout/tags_item_list_dialog.xml +++ b/AnkiDroid/src/main/res/layout/tags_item_list_dialog.xml @@ -30,6 +30,8 @@ android:layout_weight="1" android:paddingStart="6dp" android:textSize="16sp" + android:ellipsize="end" + android:singleLine="true" tools:text="Example Tag" />