Android - 嵌套 LinearLayout 中的按钮不显示
Android - Button within nested LinearLayout doesn't show
我正在尝试创建一个垂直线性布局,其中每一行都是一个带有 2 个按钮的水平线性布局(如下图所示)。
两个按钮的高度应由左侧按钮(“EXERCISE”)的内容决定,右侧图标的宽度应等于它的高度。
这是我的代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
tools:context=".ui.home.ShowWorkout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent">
<Button
android:id="@+id/refresh_button"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="2dp"
android:layout_marginLeft="2dp"
android:background="@drawable/icon_refresh"
android:onClick="refresh"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/FirstSetText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:fontFamily="sans-serif"
android:text=" First set"
android:textColor="#000000"
android:textSize="22sp" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="9">
<Button
android:id="@+id/ex1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex1_refresh_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="8"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex2"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex2_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex3"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex3_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<TextView
android:id="@+id/SecondSetText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:fontFamily="sans-serif"
android:text=" Second set"
android:textColor="#000000"
android:textSize="22sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex4"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex4_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex5"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex5_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex6"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex6_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<TextView
android:id="@+id/ThirdSetText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:fontFamily="sans-serif"
android:text=" Third set"
android:textColor="#000000"
android:textSize="22sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex7"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex7_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex8"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex8_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex9"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex9_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<TextView
android:id="@+id/PointsText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:fontFamily="sans-serif"
android:text=" Total points:"
android:textColor="#000000"
android:textSize="22sp" />
<Button
android:id="@+id/goButton"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:onClick="goToShowBySets"
android:text="GO!"
android:textSize="34sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
这是它的样子:
我在其中指定线性布局高度的行看起来不错(除第一行以外的所有行)。但是当我尝试根据 WrapContent 执行此操作时,左侧的按钮没有显示在布局中,正如您在图片中看到的那样,它似乎在虚线所在的下方。
如何在不指定高度的情况下将其固定为看起来像其余行?
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" // ===> it's wrap_content
android:weightSum="9">
<Button
android:id="@+id/ex1"
但在其他 LinearLayouts 中,layout_width 是 45dp
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp" // ===> it's 45dp
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex2"
我认为最好在你的 XML 中制作相同的高度。
最终通过为图标定义设置大小解决了这个问题。不完全是我想要的,但足够接近了。
这是单行代码的样子:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/ex1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="22sp"/>
<Button
android:id="@+id/ex1_refresh_button"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/icon_refresh"
android:onClick="refreshExercise"/>
</LinearLayout>
我正在尝试创建一个垂直线性布局,其中每一行都是一个带有 2 个按钮的水平线性布局(如下图所示)。 两个按钮的高度应由左侧按钮(“EXERCISE”)的内容决定,右侧图标的宽度应等于它的高度。 这是我的代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
tools:context=".ui.home.ShowWorkout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent">
<Button
android:id="@+id/refresh_button"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginStart="2dp"
android:layout_marginLeft="2dp"
android:background="@drawable/icon_refresh"
android:onClick="refresh"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/FirstSetText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:fontFamily="sans-serif"
android:text=" First set"
android:textColor="#000000"
android:textSize="22sp" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="9">
<Button
android:id="@+id/ex1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex1_refresh_button"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_weight="8"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex2"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex2_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex3"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex3_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<TextView
android:id="@+id/SecondSetText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:fontFamily="sans-serif"
android:text=" Second set"
android:textColor="#000000"
android:textSize="22sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex4"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex4_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex5"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex5_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex6"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex6_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<TextView
android:id="@+id/ThirdSetText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:fontFamily="sans-serif"
android:text=" Third set"
android:textColor="#000000"
android:textSize="22sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex7"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex7_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex8"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex8_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex9"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_height="wrap_content"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="24sp"/>
<Button
android:id="@+id/ex9_refresh_button"
android:layout_width="fill_parent"
android:layout_weight="8"
android:layout_height="match_parent"
android:background="@drawable/icon_refresh"
android:onClick="refresh"/>
</LinearLayout>
<TextView
android:id="@+id/PointsText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:fontFamily="sans-serif"
android:text=" Total points:"
android:textColor="#000000"
android:textSize="22sp" />
<Button
android:id="@+id/goButton"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:onClick="goToShowBySets"
android:text="GO!"
android:textSize="34sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
这是它的样子:
我在其中指定线性布局高度的行看起来不错(除第一行以外的所有行)。但是当我尝试根据 WrapContent 执行此操作时,左侧的按钮没有显示在布局中,正如您在图片中看到的那样,它似乎在虚线所在的下方。 如何在不指定高度的情况下将其固定为看起来像其余行?
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" // ===> it's wrap_content
android:weightSum="9">
<Button
android:id="@+id/ex1"
但在其他 LinearLayouts 中,layout_width 是 45dp
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp" // ===> it's 45dp
android:orientation="horizontal"
android:weightSum="9">
<Button
android:id="@+id/ex2"
我认为最好在你的 XML 中制作相同的高度。
最终通过为图标定义设置大小解决了这个问题。不完全是我想要的,但足够接近了。 这是单行代码的样子:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/ex1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#AFEEEE"
android:fontFamily="sans-serif"
android:onClick="ShowExercise"
android:text="Exercise"
android:textColor="#FFFFFF"
android:textSize="22sp"/>
<Button
android:id="@+id/ex1_refresh_button"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/icon_refresh"
android:onClick="refreshExercise"/>
</LinearLayout>