更新:问题解决了!详细说明
问题直截了当:
如标题中所述,是否可以根据特定列使用不同数量的行单元格? 例如,我有一个3X3大小的GridLayout,我想分别保留3行单元格中的第一列和第二列,但第三列使用4行单元格。我知道它违反了Grid"的整个规则,也许,但如果我使用垂直LinearLayout作为第三列,是否可能?实际上,我已经这样做了,但它没有用,所以你还有其他想法吗?
更详细的解释:(可能会花一些时间......)
我一直想做一些华丽而令人惊叹的东西,并且由于环境的原因,我已经间歇性地研究了Android开发。现在我想开始构建一些简单的东西,以加强我的知识,目前在UI构建中。所以我尝试实现Android默认计算器,如下所示,这非常漂亮,不是,个人思考。 Android 5.0 default calculator
我试图根据系统显示的界限将整个布局分为三个部分,实际上,它是两个部分,我将两个窗格组合在一起。
1.input_pane(使用 TextView )
2.result_pane(使用 TextView )
3.keypad_pane(使用 GridLayout )
我使用LinearLayout将这三个部分组合在一起,同时,我还使用另一个LinearLayout将两个TextView包装在一起,因为我认为它们是相同的,处理类似的结果。
层次结构可以这样说明:
以下是代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical">
<TextView
android:id="@+id/input_pane"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"/>
<TextView
android:id="@+id/result_pane"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
<android.support.v7.widget.GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:columnCount="4"
app:columnOrderPreserved="true"
android:layout_weight="3"
app:rowCount="4">
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="0"
android:text="9"
/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="1"
android:text="8"
/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="2"
android:text="7"
/>
<Button
app:layout_column="3"
android:text="+"/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="0"
android:text="6"
/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="1"
android:text="5"
/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="2"
android:text="4"
/>
<Button
app:layout_column="3"
android:text="-"/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="0"
android:text="3"
/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="1"
android:text="2"
/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="2"
android:text="1"
/>
<Button
app:layout_column="3"
android:text="*"/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="0"
android:text="."
/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="1"
android:text="0"
/>
<Button
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_columnWeight="1"
app:layout_rowWeight="1"
app:layout_column="2"
android:text="="
/>
<Button
app:layout_column="3"
android:text="/"/>
<Button
app:layout_column="3"
android:text="C"/>
</android.support.v7.widget.GridLayout>
</LinearLayout>
这是我在the preview得到的东西,这让我灰心丧气(因为我已经从Android开发者网站上了解了关于GridLayout的资料,在这里也找到了类似的(几乎)答案,但是我很难从我发现的东西中得到我需要的东西。我已经完成了所有这些从今天早上8点开始,现在是18:22,好吧,我确实有过休息吃午饭)我甚至试图通过指定行和列来使用GridLayout来构建整个布局,但结果看起来比我先做的更糟糕。
所以,我来这里寻求帮助。我想知道,如果有一种方法可以让Gridlayout在不同的列中包含不同的行吗?那么问题应该解决了。但如果你有其他更好的解决方案来实现那种美丽的(在我看来)布局,我很乐意听到你的消息:)
(顺便说一句,这是一个微不足道但令人烦恼的问题,为什么关于如何建立一个漂亮的布局的细节如此之少?详细?好吧,似乎我仍然把更多时间放在它上面。)
提前致谢!
更新
因此,随着尝试GridLayout的不断尝试,我终于找到了解决方案。也就是说,通过明确地叹息单元格的位置,我可以在不同的列中实现不同数量的行单元格,但这次它不会成为相同的#34;网格布局。我的英语不好可能导致理解困难,所以不再说话,而是看代码。 (我只粘贴键盘部件代码,因为这是问题所在)
<android.support.v7.widget.GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:orientation="vertical">
<Button
app:layout_row="0"
app:layout_column="0"
app:layout_columnWeight="1"
app:layout_rowWeight="1"/>
<Button
app:layout_column="1"
app:layout_row="0"
app:layout_columnWeight="1"
app:layout_rowWeight="1"/>
<Button
app:layout_column="2"
app:layout_row="0"
app:layout_columnWeight="1"
app:layout_rowWeight="1"/>
<Button
app:layout_row="1"
app:layout_column="0"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_row="1"
app:layout_column="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_row="1"
app:layout_column="2"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_row="2"
app:layout_column="0"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_row="2"
app:layout_column="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_row="2"
app:layout_column="2"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_row="3"
app:layout_column="0"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_row="3"
app:layout_column="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_row="3"
app:layout_column="2"
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<android.support.v7.widget.GridLayout
app:layout_row="0"
app:layout_column="3"
app:layout_rowSpan="4"
app:layout_rowWeight="1"
app:orientation="vertical"
app:layout_columnWeight="1">
<Button
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
<Button
app:layout_rowWeight="1"
app:layout_columnWeight="1"/>
</android.support.v7.widget.GridLayout>
</android.support.v7.widget.GridLayout>
这就是它,因为我第一次尝试构建一个简单而完整的APP仍然在路上,现在我将回到这个过程,所以欲了解更多信息,欢迎发表评论或发送电子邮件给我:D
答案 0 :(得分:0)