【问题标题】:Graphic view layout in Android Studio is blankAndroid Studio 中的图形视图布局为空白
【发布时间】:2018-09-27 16:07:18
【问题描述】:

我正在尝试使用约束布局来布置一个由 4 个按钮组成的简单垂直数组。最初的图形布局显示了元素;我不知道发生了什么,但现在它显示的只是一个空的蓝色矩形。所有布局元素都显示在列表层次结构中,具有正确的属性——只是没有为它们绘制任何内容。我尝试了在这里找到的建议,例如更改主题,但没有任何效果。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context=".TestActivity"
    tools:showIn="@layout/activity_test">

    <!--
    <LinearLayout
        android:layout_width="784dp"
        android:layout_height="1127dp"
        android:orientation="vertical"
        android:visibility="visible"
        tools:layout_editor_absoluteX="8dp"
        tools:layout_editor_absoluteY="8dp">
        -->

    <Button
        android:id="@+id/temp_button"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button 1"
        android:visibility="visible"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/fan_button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent">

        <TextView
            android:id="@+id/update_temp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Update Temp" />

        <TextView
            android:id="@+id/current_temp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="--" />

    </Button>


    <Button
        android:id="@+id/fan_button"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button 2"
        android:visibility="visible"
        app:layout_constraintTop_toBottomOf="@id/temp_button"
        app:layout_constraintBottom_toTopOf="@id/setpoint_button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent">

        <TextView
            android:id="@+id/toggle_fan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Fan Control" />

        <TextView
            android:id="@+id/fan_state"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="--" />

    </Button>


    <Button
        android:id="@+id/setpoint_button"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button 3"
        android:visibility="visible"
        app:layout_constraintTop_toBottomOf="@id/fan_button"
        app:layout_constraintBottom_toTopOf="@id/pid_button"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="parent">

        <TextView
            android:id="@+id/set_temp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Set Temp" />

        <TextView
            android:id="@+id/temp_setting"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="--" />

    </Button>


    <Button
        android:id="@+id/pid_button"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:text="Button 4"
        android:visibility="visible"
        app:layout_constraintTop_toBottomOf="@id/setpoint_button"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="parent">

        <TextView
            android:id="@+id/toggle_pid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="PID Control" />

        <TextView
            android:id="@+id/pid_state"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="--" />

    </Button>

    <!--
     </LinearLayout>
     -->
</android.support.constraint.ConstraintLayout>

【问题讨论】:

    标签: android android-layout android-studio-3.0 android-constraintlayout


    【解决方案1】:

    您的布局发生了几件事。

    1. TextViews 属于ViewGroupsContraintLayoutLinearLayout 等。我不确定您将TextViews 放在Buttons 中的意图是什么,所以我只是删除了它们。希望这个答案可以帮助您决定如何重新引入它们。
    2. 您的几个按钮的开始和结束都被限制在父级的一侧,因此它们的宽度为零且不可见。

    以下是对布局的重新设计,可让您走上正确的道路:

    <android.support.constraint.ConstraintLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button
            android:id="@+id/temp_button"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:text="Button 1"
            android:visibility="visible"
            app:layout_constraintBottom_toTopOf="@id/fan_button"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <Button
            android:id="@+id/fan_button"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:text="Button 2"
            android:visibility="visible"
            app:layout_constraintBottom_toTopOf="@id/setpoint_button"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/temp_button" />
    
    
        <Button
            android:id="@+id/setpoint_button"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:text="Button 3"
            android:visibility="visible"
            app:layout_constraintBottom_toTopOf="@id/pid_button"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/fan_button" />
    
        <Button
            android:id="@+id/pid_button"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:text="Button 4"
            android:visibility="visible"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/setpoint_button" />
    
    </android.support.constraint.ConstraintLayout>
    

    【讨论】:

    • 非常感谢!我试图在每个按钮中放置 2 个 TextView 的原因是我希望一个作为按钮的标签,另一个作为当前值。例如,我希望将temp_button 标记为“更新温度”,然后是显示当前温度的文本字段。这可能吗?
    • @RobertLewis 你可以做到,但不能那样做。最简单的方法是使用按钮上的setText() 通过将“更新温度”连接到您要显示的温度来更改其标签。这将在代码中完成。
    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多