我正在尝试使用
shinyDirButton
将 verbatimTextOutput
与 R Shiny 中的 fluidRow()
对齐。我面临的问题是,当缩小窗口时,verbatimTextOutput
与 shinyDirButton
重叠,并在进一步缩小窗口时跳到新行。当我增加窗口大小时,verbatimTextOutput
不会与 shinyDirButton
保持恒定的距离。无论窗口大小如何,我都希望按钮和文本输出始终保持在一定距离的同一行。
到目前为止我的代码:
fluidRow(
column(2,
shinyDirButton("dir_out_input", label = NULL, title = "Select directory", multiple = FALSE, icon = icon("folder"), viewtype = "detail")
),
column(10,
verbatimTextOutput("dir_out_output")
)
)
这是正常比例:
缩小窗口时:
增加窗口时:
我尝试了许多不同的解决方案来解决这个问题,比如使用
span()
或调整 verbatimTextOutput
的边距,但对我来说没有任何效果。我也尝试使用 style
和 class
变量,但我真的不太了解如何正确使用它们。
我们可以使用
splitLayout
创建固定布局:
library(fs)
library(shiny)
library(shinyFiles)
ui <- fluidPage(
splitLayout(
shinyDirButton("dir_out_input", label = NULL, title = "Select directory", multiple = FALSE, icon = icon("folder"), viewtype = "detail", style = "height:40px;"),
verbatimTextOutput("dir_out_output"),
cellWidths = c("50px", "500px")
)
)
server <- function(input, output, session) {
roots <- c(wd = '.')
shinyDirChoose(
input,
id = "dir_out_input",
roots = roots,
updateFreq = 0,
session,
defaultPath = "",
defaultRoot = NULL,
allowDirCreate = TRUE
)
output$dir_out_output <- renderPrint({
if(all(c("root", "path") %in% names(input$dir_out_input))){
selected_path <- do.call(path, c(roots[input$dir_out_input$root], input$dir_out_input$path))
# selected_path <- path_abs(selected_path) # get the absolute path
selected_path
} else {
"No directory selected"
}
})
}
shinyApp(ui, server)