我正在使用名为AIDE的移动应用程序(以及它的程序App UI Designer)为我开始编程之前制作的移动应用程序创建布局。布局几乎是完美的。我希望播放器的两个部分位于屏幕的顶部,颠倒以便两个玩家都可以使用它。然后我在中间添加一个分隔符,playerOne部分位于底部,中间有空格/分隔符。问题是,分隔符,当设置为Wrap Content为高度时,它会过度扩展屏幕下降,将playerOne部分推离屏幕。
我需要分隔线以保持高度扩展,直到playerOne部分位于屏幕底部且playerTwo部分位于顶部。
10 dp
)<?xml version="1.0" encoding="utf-8"?>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
columnCount="1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
rowCount="1"
android:columnCount="3"
android:layout_gravity="right"
android:orientation="horizontal"
android:rowCount="8">
<!-- Start of Player Two Section -->
<!-- Current LP -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="8000 LP"
android:minWidth="100dp"
android:gravity="center"
android:rotation="180"
android:id="@+id/playerTwo_LP"
android:layout_column="1"
android:layout_row="0"
android:layout_rowSpan="2"
android:layout_gravity="fill"/>
<!-- Toolkit -->
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="TOOLS"
android:rotation="180"
android:id="@+id/playerTwo_toolKit"
android:layout_row="1"
android:layout_column="0"/>
<!-- Cards Tool -->
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="CARDS"
android:layout_row="1"
android:layout_column="2"
android:rotation="180"
android:id="@+id/playerTwo_CardLibrary"/>
<!-- Add LP -->
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="ADD LP"
android:layout_gravity="fill"
android:rotation="180"
android:id="@+id/playerTwo_addLP"
android:layout_row="0"
android:layout_column="0"/>
<!-- Lose LP -->
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="LOSE LP"
android:layout_column="2"
android:rotation="180"
android:id="@+id/playerTwo_loseLP"
android:layout_row="0"/>
<!-- Player Two Name -->
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:ems="10"
android:layout_row="2"
android:layout_columnSpan="3"
android:layout_gravity="fill"
android:text="Seto Kaiba"
android:gravity="center"
android:id="@+id/playerTwo_name"
android:textStyle="italic"
android:rotation="180"/>
<!-- End of Player Two Section -->
<View
android:background="?android:attr/dividerVertical"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_column="0"
android:layout_columnSpan="3"
android:layout_row="3"
android:layout_rowSpan="1"
android:layout_gravity="center|fill"/>
<!-- Start of Player One Section -->
<!-- Player One Name -->
<EditText
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:ems="10"
android:layout_row="5"
android:layout_columnSpan="3"
android:layout_gravity="fill"
android:text="Yugi Muto"
android:gravity="center"
android:id="@+id/playerOne_name"
android:textStyle="italic"
android:rotation="0"/>
<!-- Current LP -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="8000 LP"
android:minWidth="100dp"
android:gravity="center"
android:rotation="0"
android:id="@+id/playerOne_LP"
android:layout_column="1"
android:layout_row="6"
android:layout_rowSpan="2"
android:layout_gravity="fill"/>
<!-- Toolkit -->
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="TOOLS"
android:rotation="0"
android:id="@+id/playerOne_toolKit"
android:layout_row="6"
android:layout_column="0"
android:layout_gravity="center"/>
<!-- Cards Tool -->
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="CARDS"
android:layout_row="6"
android:layout_column="2"
android:rotation="0"
android:id="@+id/playerOne_CardLibrary"/>
<!-- Add LP -->
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="ADD LP"
android:layout_gravity="fill"
android:id="@+id/playerOne_addLP"
android:layout_row="7"
android:layout_column="0"/>
<!-- Lose LP -->
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="LOSE LP"
android:layout_column="2"
android:id="@+id/playerOne_loseLP"
android:layout_row="7"/>
<!-- End of Player One Section -->
</GridLayout>
答案 0 :(得分:2)
从根本上说,我认为GridLayout
是您父级布局的错误选择。你可以通过查看你的布局来判断它不是真正一个网格。当然,你可以使用跨度使它适合你,但你最好选择一个你不必打架的父版面。
我推荐ConstraintLayout
。它几乎是为这样的布局量身定制的。你可以告诉它诸如“把这个视图放在右上角”和“把这个视图放在左下角”这样的好东西。或者“拉伸此视图以填充这两个其他视图之间的所有空间”。
如果您重新编写它以使用ConstraintLayout
,那么这就是您的布局:
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<!-- player two section -->
<Button
android:id="@+id/playerTwo_addLP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ADD LP"
android:rotation="180"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"/>
<Button
android:id="@+id/playerTwo_toolKit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TOOLS"
android:rotation="180"
app:layout_constraintTop_toBottomOf="@+id/playerTwo_addLP"
app:layout_constraintLeft_toLeftOf="parent"/>
<Button
android:id="@+id/playerTwo_loseLP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LOSE LP"
android:rotation="180"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<Button
android:id="@+id/playerTwo_CardLibrary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CARDS"
android:rotation="180"
app:layout_constraintTop_toBottomOf="@+id/playerTwo_loseLP"
app:layout_constraintRight_toRightOf="parent"/>
<TextView
android:id="@+id/playerTwo_LP"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:text="8000 LP"
android:textAppearance="?android:attr/textAppearanceLarge"
android:rotation="180"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toRightOf="@+id/playerTwo_addLP"
app:layout_constraintRight_toLeftOf="@+id/playerTwo_loseLP"
app:layout_constraintBottom_toBottomOf="@+id/playerTwo_toolKit"/>
<EditText
android:id="@+id/playerTwo_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:textStyle="italic"
android:text="Seto Kaiba"
android:rotation="180"
app:layout_constraintTop_toBottomOf="@+id/playerTwo_toolKit"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<!-- player one section -->
<Button
android:id="@+id/playerOne_addLP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ADD LP"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<Button
android:id="@+id/playerOne_toolKit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TOOLS"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toTopOf="@+id/playerOne_addLP"/>
<Button
android:id="@+id/playerOne_loseLP"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LOSE LP"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
<Button
android:id="@+id/playerOne_CardLibrary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CARDS"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/playerOne_loseLP"/>
<TextView
android:id="@+id/playerOne_LP"
android:layout_width="0dp"
android:layout_height="0dp"
android:gravity="center"
android:text="8000 LP"
android:textAppearance="?android:attr/textAppearanceLarge"
app:layout_constraintTop_toTopOf="@+id/playerOne_toolKit"
app:layout_constraintLeft_toRightOf="@+id/playerOne_toolKit"
app:layout_constraintRight_toLeftOf="@+id/playerOne_CardLibrary"
app:layout_constraintBottom_toBottomOf="parent"/>
<EditText
android:id="@+id/playerOne_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:textStyle="italic"
android:text="Yugi Muto"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/playerOne_toolKit"/>
<!-- divider -->
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:background="?android:attr/dividerVertical"
app:layout_constraintTop_toBottomOf="@+id/playerTwo_name"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@+id/playerOne_name"/>
</android.support.constraint.ConstraintLayout>