我正在尝试拉伸计算器的键盘(这是一个带有按钮的GridLayout)。它是一个5 * 4(列*行)。
GridLayout
android:layout_height="match_parent"
和android:layout_width="match_parent"
以使其尺寸填满可用空间。然后android:layout_column
和android:layout_row
的单元格。 我得到以下结果:
1080×1920
细胞的宽度和高度均匀,但伸展不足以填满整个网格。所以我在网上搜索并看到我可以为每个单元格分配相同的权重,并且布局确定了填充整个网格的统一宽度和高度值。
(旁边的问题:在这种情况下,android如何确定这些细胞的大小?为什么它不会使它们比这里的更大/更小?)
所以我补充说:
android:layout_weight="1"
和android:layout_height="1"
到每个按钮我得到了这个结果:
1080×1920
真棒。看起来它按预期工作..直到我将分辨率更改为其他内容:
480×800
或者如果我保持相同的 1080x1920 分辨率,但强制顶部的最小高度为280dp
(279dp工作正常)
我该如何解决这个问题?我打算API级别21,我想强制GridLayout填充可用空间无论如何。我更喜欢按下按钮(甚至将内容剪掉/看不见),而不是拍摄屏幕。要完成这里是XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root">
<!--Top section (screen + few keys)-->
<LinearLayout
android:style="@style/CalculatorScreenStyle"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/top">
<Space
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="280dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="40sp"
android:hint="Enter a number here"/>
</LinearLayout>
<!-- Keyboard layout -->
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/keyboard"
android:columnCount="4"
android:rowCount="5">
<Button
android:style="@style/CalculatorButtonStyle"
android:text="C"
android:id="@+id/clearButton"
android:layout_column="0"
android:layout_row="0" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="Button"
android:id="@+id/button15"
android:layout_column="1"
android:layout_row="0" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="%"
android:layout_column="2"
android:layout_row="0"
android:id="@+id/percentButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:id="@+id/divideButton"
android:layout_column="3"
android:layout_row="0"
android:text="÷" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="7"
android:layout_column="0"
android:layout_row="1"
android:id="@+id/sevenNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="8"
android:layout_column="1"
android:layout_row="1"
android:id="@+id/eightNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="9"
android:layout_column="2"
android:layout_row="1"
android:id="@+id/nineNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="+"
android:layout_column="3"
android:layout_row="1"
android:id="@+id/plusButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="4"
android:layout_column="0"
android:layout_row="2"
android:id="@+id/fourNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="5"
android:layout_column="1"
android:layout_row="2"
android:id="@+id/fiveNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="6"
android:layout_column="2"
android:layout_row="2"
android:id="@+id/sixNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="x"
android:layout_column="3"
android:layout_row="2"
android:id="@+id/multiplyButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="1"
android:layout_column="0"
android:layout_row="3"
android:id="@+id/oneNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="2"
android:layout_column="1"
android:layout_row="3"
android:id="@+id/twoNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="3"
android:layout_column="2"
android:layout_row="3"
android:id="@+id/threeNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="-"
android:layout_column="3"
android:layout_row="3"
android:id="@+id/minusButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="+/-"
android:layout_column="0"
android:layout_row="4"
android:id="@+id/signButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="0"
android:layout_column="1"
android:layout_row="4"
android:id="@+id/zeroNumButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="."
android:layout_column="2"
android:layout_row="4"
android:id="@+id/periodButton" />
<Button
android:style="@style/CalculatorButtonStyle"
android:text="="
android:layout_column="3"
android:layout_row="4"
android:id="@+id/equalsButton" />
</GridLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CalculatorButtonStyle" >
<item name="android:textSize">22sp</item>
<item name="android:layout_columnWeight">1</item>
<item name="android:layout_rowWeight">1</item>
<item name="android:background">#9E5EC2</item>
</style>
<style name="CalculatorScreenStyle">
<item name="android:background">#ED59E8</item>
</style>
</resources>
编辑:作为临时解决方案,我使用垂直LinearLayout
横向LinearLayout
s,并且我对所有Button
s赋予相等的权重。它工作正常,但我想知道如果我必须模仿它自己的工作方式,GridLayout
的用途是什么..
答案 0 :(得分:0)
当android api&lt; 21,它没有奏效。
所以我们可以添加编译。
<main>
<div class="item"><img class="itemimg" src="media/pic1.JPG" alt="refresh!"><p>link1</p></div>
<div class="item"><img class="itemimg" src="media/pic2.jpg" alt="refresh!"><p>link2</p></div>
<div class="item"><img class="itemimg" src="media/pic3.jpg" alt="refresh!"><p>link2</p></div>
<div class="item"><img class="itemimg" src="media/pic4.jpg" alt="refresh!"><p>link1</p></div>
</main>
然后更改您的代码。
在XML代码中使用compile 'com.android.support:gridlayout-v7:25.3.1'
。
android.support.v7.widget.GridLayout
注意强>
它有新的属性。