Browse Source

Tooltip tutorial (#709)

* Tooltips tutorial.
pull/715/head
Roman Sedaikin 3 years ago committed by GitHub
parent
commit
af224ccb0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      README.md
  2. 72
      tutorials/Desktop_Components/README.md
  3. 0
      tutorials/Desktop_Components/lazy_scrollbar.gif
  4. 0
      tutorials/Desktop_Components/scrollbars.gif
  5. 0
      tutorials/Desktop_Components/themed_scrollbar.gif
  6. BIN
      tutorials/Desktop_Components/tooltips.gif

3
README.md

@ -28,7 +28,8 @@ at https://android.googlesource.com/platform/frameworks/support.
* [Getting started](tutorials/Getting_Started)
* [Image and icon manipulations](tutorials/Image_And_Icons_Manipulations)
* [Mouse events and hover](tutorials/Mouse_Events)
* [Scrolling and scrollbars](tutorials/Scrollbars)
* [Scrolling and scrollbars](tutorials/Desktop_Components)
* [Tooltips](tutorials/Desktop_Components#tooltips)
* [Menu, tray, notifications](tutorials/Tray_Notifications_MenuBar)
* [Keyboard support](tutorials/Keyboard)
* [Building native distribution](tutorials/Native_distributions_and_local_execution)

72
tutorials/Scrollbars/README.md → tutorials/Desktop_Components/README.md

@ -1,12 +1,12 @@
# Scrollbar usage
# Desktop components
## What is covered
In this tutorial, we will show you how to add scrollbars to scrollable lists using Compose for Desktop.
In this tutorial, we will show you how to use desktop-specific components of Compose for Desktop such as scrollbars and tooltips.
## Scrollbars applying
## Scrollbars
You can apply scrollbars to scrollable components. The scrollbar and scrollable components share a common state to synchronize with each other. For example, VerticalScrollbar can be attached to Modifier.verticalScroll, and LazyColumnFor and HorizontalScrollbar can be attached to Modifier.horizontalScroll and LazyRowFor.
You can apply scrollbars to scrollable components. The scrollbar and scrollable components share a common state to synchronize with each other. For example, `VerticalScrollbar` can be attached to `Modifier.verticalScroll`, and `LazyColumnFor` and `HorizontalScrollbar` can be attached to `Modifier.horizontalScroll` and `LazyRowFor`.
```kotlin
import androidx.compose.desktop.Window
@ -93,7 +93,7 @@ fun TextBox(text: String = "Item") {
## Lazy scrollable components with Scrollbar
You can use scrollbars with lazy scrollable components, for example, LazyColumn.
You can use scrollbars with lazy scrollable components, for example, `LazyColumn`.
```kotlin
import androidx.compose.desktop.Window
@ -166,7 +166,7 @@ fun TextBox(text: String = "Item") {
## Theme applying
Scrollbars support themes to change their appearance. The example below shows how to use the DesktopTheme appearance for the scrollbar.
Scrollbars support themes to change their appearance. The example below shows how to use the `DesktopTheme` appearance for the scrollbar.
```kotlin
import androidx.compose.desktop.DesktopTheme
@ -243,3 +243,63 @@ fun TextBox(text: String = "Item") {
```
![Themed scrollbar](themed_scrollbar.gif)
## Tooltips
You can add tooltip to any components using `BoxWithTooltip`. Basically `BoxWithTooltip` is a `Box` with the ability to show a tooltip, and has the same arguments and behavior as `Box`.
The main arguments of the `BoxWithTooltip` function:
- tooltip - composable content representing tooltip
- delay - time delay in milliseconds after which the tooltip will be shown (default is 500 ms)
- offset - tooltip offset, the default position of the tooltip is under the mouse cursor
```kotlin
import androidx.compose.desktop.Window
import androidx.compose.foundation.BoxWithTooltip
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Button
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.ui.Alignment
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.DpOffset
import androidx.compose.ui.unit.IntSize
fun main() = Window(title = "Tooltip Example", size = IntSize(300, 300)) {
val buttons = listOf("Button A", "Button B", "Button C", "Button D", "Button E", "Button F")
Column(Modifier.fillMaxSize(), Arrangement.spacedBy(5.dp)) {
buttons.forEachIndexed { index, name ->
// wrap button in BoxWithTooltip
BoxWithTooltip(
modifier = Modifier.padding(start = 40.dp),
tooltip = {
// composable tooltip content
Surface(
modifier = Modifier.shadow(4.dp),
color = Color(255, 255, 210),
shape = RoundedCornerShape(4.dp)
) {
Text(
text = "Tooltip for ${name}",
modifier = Modifier.padding(10.dp)
)
}
},
delay = 600, // in milliseconds
offset = if (index % 2 == 0) DpOffset(-16.dp, 0.dp) else DpOffset.Zero // tooltip offset
) {
Button(onClick = {}) { Text(text = name) }
}
}
}
}
```
![Tooltip](tooltips.gif)

0
tutorials/Scrollbars/lazy_scrollbar.gif → tutorials/Desktop_Components/lazy_scrollbar.gif

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

0
tutorials/Scrollbars/scrollbars.gif → tutorials/Desktop_Components/scrollbars.gif

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 2.7 MiB

0
tutorials/Scrollbars/themed_scrollbar.gif → tutorials/Desktop_Components/themed_scrollbar.gif

Before

Width:  |  Height:  |  Size: 3.6 MiB

After

Width:  |  Height:  |  Size: 3.6 MiB

BIN
tutorials/Desktop_Components/tooltips.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Loading…
Cancel
Save