如何使用Jetpack Compose将按钮标记为可选

时间:2020-10-04 19:08:59

标签: android kotlin android-jetpack-compose

我想将一个按钮标记为选中或未选中,如果未选中该按钮应该显示灰色背景(未选中),并且如果选中该按钮我想给它显示颜色,我想防止这样的else分支

function RunARGquery {
    param (
        [string[]]$SubscriptionIds,
        [string]$ARG_query
    )
    
    $fullResultSet = @()
    $pageSize = 5000
    
    # Subscription batching code below taken
    #  from https://docs.microsoft.com/en-us/azure/governance/resource-graph/troubleshoot/general#toomanysubscription
    # Create a counter, set the batch size, and prepare a variable for the results
    $counter = [PSCustomObject] @{ Value = 0 }
    $batchSize = 1000
    # Group the subscriptions into batches
    $subscriptionsBatch = $subscriptionIds | Group -Property { [math]::Floor($counter.Value++ / $batchSize) }

    $currentBatchNo = 0
    # Run the query for each batch
    foreach ($batch in $subscriptionsBatch) {
        $pagesProcessedSoFar = 0
        do {
            $results = @()
            if($pagesProcessedSoFar -eq 0) {
                $results = Search-AzGraph -Subscription $batch.Group -Query $ARG_query -First $pageSize
            }
            else {
                $results = Search-AzGraph -Subscription $batch.Group -Query $ARG_query -First $pageSize -Skip ($pagesProcessedSoFar * $pageSize)
            }
            $pagesProcessedSoFar++
            Write-Host "Processed $pagesProcessedSoFar pages so far. A number of $(($results | Measure-Object).count) results returned in the last page"
            $fullResultSet += $results
        } while(($results | Measure-Object).count -eq $pageSize)
        Write-Host "Finished subscription batch $currentBatchNo"
        $currentBatchNo++
    }
    return $fullResultSet
}

# Get the date/time now, for timestamping both output files
$currentDateTime = Get-Date -Uformat "%Y%m%d-%H%M%S"

Write-Host "Getting list of Azure subscriptions..."
# Fetch the full array of subscription IDs
$subscriptions = Get-AzSubscription
$subscriptionIds = $subscriptions.Id
Write-Host "Found $(($subscriptionIds | Measure-Object).count) subscriptions"

# ARG query from Listing 23
$ARM_ARG_query = @"
Resources
    | where type =~ 'microsoft.compute/virtualmachines'
    | project id, vmId = tolower(tostring(id)), vmName = name
    | join (Resources
        | where type =~ 'microsoft.network/networkinterfaces'
        | mv-expand ipconfig=properties.ipConfigurations
        | project vmId = tolower(tostring(properties.virtualMachine.id)), privateIp = ipconfig.properties.privateIPAddress, publicIpId = tostring(ipconfig.properties.publicIPAddress.id)
        | join kind=leftouter (Resources
            | where type =~ 'microsoft.network/publicipaddresses'
            | project publicIpId = id, publicIp = properties.ipAddress
        ) on publicIpId
        | project-away publicIpId, publicIpId1
        | summarize privateIps = make_list(privateIp), publicIps = make_list(publicIp) by vmId
    ) on vmId
    | project-away vmId, vmId1
    | sort by vmName asc
"@
Write-Host "Running ARM ARG query..."
RunARGquery -SubscriptionIds $subscriptionIds -ARG_query $ARM_ARG_query `
    | Select-Object -ExcludeProperty ResourceId `
    | Sort-Object -Property vmName `
    | Export-Csv -NoTypeInformation "AzureVMs_$currentDateTime.csv"

我希望按钮对voiceState值作出反应,如果为false,则不应单击它,而仅显示灰色的未选中背景,如果将其设置为true,我想在其上显示按钮

当前,“可组合按钮”没有选定的参数,因此我发现这有点样板以某种方式实现此功能

1 个答案:

答案 0 :(得分:2)

仅通过启用参数即可解决

  Button(onClick = {
                    onVotePollClick(poll)
                }, modifier = Modifier.width(200.dp).align(Alignment.CenterHorizontally).clip(
                        CircleShape
                ),enabled = voteState.value) {
                    Text(text = "Vote")
                }