我是Android / Java / Programming的新手,很抱歉,如果这是一个愚蠢的问题。
我一直为我的LG G3做一个小游戏,并且网格的布局看起来很好(9x9),可以在这里找到:http://i.imgur.com/DGlsYGv.png
但是,我最近在仿真器上测试了它,这是一个Nexus 5,其布局如下:http://i.imgur.com/MiIsYyr.png(它现在是一个8x9网格并流过屏幕边缘。)
我已将所有按钮宽度和高度设置为“dp”。
这是布局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:layout_gravity="top|right"
android:background="#ff000000"
android:layout_centerHorizontal="true"
android:id="@+id/fifteen_by_fifteen">
<Button
android:layout_width="80dp"
android:layout_height="50dp"
android:textSize="23sp"
android:background="@android:color/transparent"
android:text="@string/back"
android:layout_gravity="top|right"
android:textColor="#ffff274a"
android:id="@+id/back_button"/>
<Button
android:layout_width="fill_parent"
android:layout_height="50dp"
android:textSize="30sp"
android:background="@android:color/transparent"
android:id="@+id/show_unknown_distance_button"
android:layout_gravity="center_horizontal"
android:textStyle="bold"
android:textColor="#ff59e4ff"/>
<GridLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="50dp"
android:rowCount="9"
android:columnCount="9"
android:layout_gravity="center">
<Button
android:layout_width="44dip"
android:layout_height="45dip"
android:id="@+id/zero_zero"
android:layout_margin="1dip"
android:layout_gravity="center"
android:paddingTop="1dip"
android:paddingRight="2dip"
android:paddingLeft="2dip"
android:paddingBottom="1dip"
android:layout_row="0"
android:layout_column="0" />
<Button
android:layout_width="44dip"
android:layout_height="45dip"
android:id="@+id/zero_one"
android:layout_margin="1dip"
android:layout_gravity="center"
android:paddingTop="1dip"
android:paddingRight="2dip"
android:paddingLeft="2dip"
android:paddingBottom="1dip"
android:layout_row="0"
android:layout_column="1" />
<Button
android:layout_width="44dip"
android:layout_height="45dip"
android:id="@+id/zero_two"
android:layout_margin="1dip"
android:layout_gravity="center"
android:paddingTop="1dip"
android:paddingRight="2dip"
android:paddingLeft="2dip"
android:paddingBottom="1dip"
android:layout_row="0"
android:layout_column="2" />
所以81个按钮。
那么我应该怎样做才能在所有设备上看到9x9网格?
感谢您提供的任何帮助
答案 0 :(得分:2)
阅读有关屏幕尺寸的信息: https://stackoverflow.com/a/17547325/3552583
为了更好的响应&#34;设计,使用权重属性。
Doc在这里:http://developer.android.com/guide/topics/ui/layout/linear.html
编辑:示例:http://www.101apps.co.za/index.php/articles/using-android-s-layout-weight-attribute.html
祝你好运;)答案 1 :(得分:0)
您可以使用setWeight
的{{1}}属性。加权布局将测量显示,每个布局将根据其相对权重填充屏幕。一旦你熟悉它,这是一种简单的方法。但是,它可能导致很多嵌套&#34;如果考虑边距/填充等,布局和权重
您可以使用LinearLayout
并设置列/行。这与上面的优点相似,但通常对于您想要滚动的情况很有用。但是,适配器可能会为您提供更好的选择。
但是,控制力最强的选项是使用GridView
来衡量屏幕大小,然后根据屏幕的测量大小设置所有布局。在布局中设置DisplayMetrics
通常会出现这样的问题。
如果您需要或需要,这也可以让您完全控制边距,居中等。您还可以确保它在较小的屏幕和较大的屏幕上看起来都很合适。
How to get screen display metrics in application class
最后,您可以考虑为dp
hdpi
和mdpi
屏幕使用不同的布局。甚至使用xhdpi
属性。
How to create layout-small-land folder?
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension