Класс Dp
Класс Dp хранит величину
в density-independent pixels.
Литерал пишут через суффикс .dp,
например 16.dp.
На экранах с разной плотностью одно и то же
число dp даёт одинаковый физический размер.
Перевод в пиксели делают через
LocalDensity
или методы класса
Modifier.
Синтаксис
val gap: Dp = 16.dp
Пример
Давайте зададим отступ тексту в dp:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Text(
text = "abcde",
modifier = Modifier.padding(24.dp),
)
}
}
}
На экране вокруг текста появится отступ, одинаковый по смыслу на разных устройствах.
Пример
Давайте сложим два значения Dp для ширины Spacer:
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Text
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val part1 = 8.dp
val part2 = 12.dp
Row {
Text(text = "abcde")
Spacer(modifier = Modifier.width(part1 + part2))
Text(text = "12345")
}
}
}
}
На экране между текстами будет зазор шириной
20 dp.
Смотрите также
-
класс
LocalDensity,
который переводит dp в пиксели на текущем экране -
метод
padding,
который задаёт отступы в dp -
метод
size,
который задаёт ширину и высоту в dp -
функция
Spacer,
которая занимает место заданного размера