获取或计算可用屏幕空间的最佳方法是什么?

时间:2018-10-31 17:58:29

标签: android android-layout

我试图获取我的应用程序可用的屏幕空间。这就是操作/工具栏和导航栏之间的空间。
原因是我需要它。我在约束布局中有六个垂直链接的按钮。在运行时,我需要调整按钮的大小。该应用具有固定的横向。
最终,我想将链的底部按钮限制在底部父级或导航栏(如果存在)上,将顶部按钮限制在操作/工具栏上。

我发现操作栏/工具栏有一个属性资源,我将其限制在链的顶部。

对于底部,我的想法是使用约束指南来约束底部按钮。我只是不确定如何找到要放置的屏幕位置。

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

如果先前的答案由于任何原因都不起作用,则还有另一种方法。在布局编辑器中,将按钮放在约束布局上,并将它们一个个约束到另一个。将约束设置为固定值,例如8dp。第一个按钮限制在根布局的顶部,最后一个限制在底部。最后,将按钮的高度设置为“匹配约束”。我在移动设备上,因此我无法复制任何xml,但这应强制高度由根布局的尺寸和约束的长度来决定

答案 1 :(得分:0)

步骤:

  1. 获取窗口高度
  2. 调整与该高度成比例的图像大小

将此代码添加到setContentView之后或通货膨胀之后:

Public Class Form1
    Dim numAttempts As Double = 0

    Private Sub btnok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnok.Click
        Dim User As String = "ShaoHecc"
        Dim Password As String = "daedric123"
        Dim loginuser As String
        Dim loginpassword As String
        Dim wrong As String = False

        loginpassword = Val(txtpass.Text)
        loginuser = Val(txtuser.Text)
        txtpass.Text = loginpassword
        txtuser.Text = loginuser

        If txtuser.Text = User And
            txtpass.Text = Password Then
            MessageBox.Show("Access Granted!")
        ElseIf txtuser.Text = loginuser And
            txtpass.Text = loginpassword Then
            MessageBox.Show("Username and Password incorrect, " & numAttempts & " / 3 attempts left")
        End If

        If txtuser.Text = User = False Then
            MessageBox.Show("Username incorrect, you have " & numAttempts & " / 3 attempts left.")
            txtuser.Text = Nothing
        End If

        If txtpass.Text = Password = False Then
            MessageBox.Show("Password incorrect, you have " & numAttempts & " / 3 attempts left.")
            txtpass.Text = Nothing
        End If

        If numAttempts = 3 Then
            MessageBox.Show("Maxiumum number attempts reached, you have been denied access.")
            Application.Exit()
        Else
            numAttempts = numAttempts + 1
        End If
    End Sub
End Class