我有LinearLayout
与TextView
,GridLayout
和另一个TextView
。它在许多现代手机和平板电脑上正确显示,但它完全无法在像Nexus S这样的小型显示器上显示。请参阅下面的图片。GridLayout在小型显示器上坍塌
我试图缩小字体大小,除去9补丁背景,甚至删除所有的利润。当有一些利润时,我可以看到数字7。然后我最小化了它们,我可以看到四条线,第一个按钮的显示次数是显示的两倍。我不明白为什么,它应该有wrap_content
宽度。
我试图尽量减少代码,并将其减少到GridLayout
与单行,它仍然不适合屏幕的宽度。
这是怎么回事呢?
更新:
- 420x800 MDPI工作
- 420x800华电国际被打破
- 540x920华电国际工程
- 720x1280华电国际工程
更新2:
的Nexus 5X有字体为38sp时的相同问题r更大。有趣的是,工作室的设计师显示正确的布局,但两者的装置/模拟器显示损坏的视图和以下错误:
D/android.support.v7.widget.GridLayout: vertical constraints: y1-y0>=197, y2-y1>=197, y3-y2>=197, y4-y3>=197, y4-y0<=785 are inconsistent; permanently removing: y4-y0<=785.
calc.xml:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--Display row-->
<TextView
android:id="@+id/assignment"
android:text="50 + 40 = 90"
style="@style/Formula"
android:focusable="false"
android:layout_width="match_parent"
android:layout_height="80dp"
tools:ignore="HardcodedText" />
<android.support.v7.widget.GridLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:columnCount="4"
app:rowCount="4">
<!-- row with 7-9,+ -->
<Button
android:id="@+id/digit7"
android:text="7"
style="@style/KeypadLeftButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/digit8"
android:text="8"
style="@style/KeypadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/digit9"
android:text="9"
style="@style/KeypadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/buttonPlus"
android:text="+"
style="@style/KeypadRightButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_rowWeight="0.5"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<!--row with 4-6, - -->
<Button
android:id="@+id/digit4"
android:text="4"
style="@style/KeypadLeftButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/digit5"
android:text="5"
style="@style/KeypadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/digit6"
android:text="6"
style="@style/KeypadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/buttonMinus"
android:text="-"
style="@style/KeypadRightButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_rowWeight="0.5"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<!--row with 1-3, * -->
<Button
android:id="@+id/digit1"
android:text="1"
style="@style/KeypadLeftButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/digit2"
android:text="2"
style="@style/KeypadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/digit3"
android:text="3"
style="@style/KeypadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
app:layout_rowWeight="1"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/buttonMultiply"
android:text="\u22C5"
style="@style/KeypadRightButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_rowWeight="0.5"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<!--row with 0, backspace and/-->
<Button
android:id="@+id/digit0"
android:text="0"
style="@style/KeypadLeftButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_columnWeight="1"
app:layout_gravity="fill_horizontal"
app:layout_rowWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/buttonBackspace"
android:text="←"
style="@style/KeypadButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_gravity="fill_vertical"
app:layout_columnSpan="2"
app:layout_rowWeight="0.5"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
<Button
android:id="@+id/buttonDivide"
android:text=":"
style="@style/KeypadRightButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_rowWeight="0.5"
app:layout_columnWeight="1"
tools:ignore="HardcodedText" />
</android.support.v7.widget.GridLayout>
<!--row with button submit -->
<Button
android:id="@+id/buttonSubmit"
android:text="@string/action_next_formula"
style="@style/KeypadNextButton"
android:layout_width="match_parent"
android:layout_height="80dp"
app:layout_gravity="fill_horizontal"/>
</LinearLayout>
风格:
<style name="Formula">
<item name="android:textSize">@dimen/calc_button_text</item>
<item name="android:textColor">@color/gray_35</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/lcd</item>
<item name="android:layout_marginTop">@dimen/calc_big_margin</item>
<item name="android:layout_marginBottom">@dimen/calc_superbig_margin</item>
<item name="android:layout_marginLeft">@dimen/calc_big_margin</item>
<item name="android:layout_marginRight">@dimen/calc_big_margin</item>
</style>
<style name="KeypadButton" parent="@style/Widget.AppCompat.Button">
<item name="android:textSize">@dimen/calc_button_text</item>
<item name="android:textColor">@color/white</item>
<!--<item name="android:background">@drawable/tl_2</item>-->
<item name="android:layout_marginLeft">@dimen/calc_small_margin</item>
<item name="android:layout_marginBottom">@dimen/calc_small_margin</item>
</style>
<style name="KeypadLeftButton" parent="@style/KeypadButton">
<item name="android:layout_marginLeft">@dimen/calc_big_margin</item>
</style>
<style name="KeypadRightButton" parent="@style/KeypadButton">
<item name="android:layout_marginRight">@dimen/calc_big_margin</item>
</style>
<style name="KeypadNextButton" parent="@style/Widget.AppCompat.Button.Colored">
<item name="android:background">@drawable/tl_next</item>
<item name="android:textSize">@dimen/calc_button_text</item>
<item name="android:layout_marginTop">@dimen/calc_big_margin</item>
<item name="android:layout_marginBottom">@dimen/calc_big_margin</item>
<item name="android:layout_marginLeft">@dimen/calc_big_margin</item>
<item name="android:layout_marginRight">@dimen/calc_big_margin</item>
</style>
梦诗:
<dimen name="calc_button_text">14sp</dimen>
<dimen name="calc_superbig_margin">2dp</dimen>
<dimen name="calc_big_margin">1dp</dimen>
<dimen name="calc_small_margin">0dp</dimen>
更新16th feb
Manjunath Prabhakar表示,麻烦可能与权重有关。所以我试图删除所有的重量属性,现在布局更有意义。但我还没有修复它。我会考虑重写布局以嵌套LinearLayouts作为退后一步,因此我会为其他建议打开赏金。
我认为你需要为hdpi设备分开布局。 –
是的。但我必须先让它在hdpi上工作。当我移除权重时,它可以正确显示,但单元格不占用所有可用空间。由于只有最后一个单元展开,因此不能将layout_gravity属性设置为fill_horizontal | fill_vertical。 –
我认为你必须让你的物品宽度match_parent,以最大限度地利用布局的重量!你可以试试这个吗? – Mohamed