将布局定位到井字游戏应用程序时出现问题 - 从屏幕上掉下来
Troubles positioning layouts to tic tac toe app - falling off screen
我是 android 开发新手 。上个月我在优达学城参加了初级课程。我在正确定位我的布局时遇到了麻烦,因为屏幕上总是有一些东西没有显示,而且在不同的设备上它看起来也不同,尽管我根本没有使用特定的尺寸。对于我的井字游戏,我使用按钮来表示九个区域的十字和圆圈。我已经用这些布局尝试了几乎所有的东西,我需要你的帮助,因为我必须在 7 月 11 日之前准备好这个项目。谢谢你。这是完整的代码,因为我认为问题无法通过其他方式解决。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:theme="@style/PurpleTheme"
android:background="@drawable/background_1a"
tools:context="com.example.android.tictactoe.MainActivity"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="7">
<LinearLayout
android:id="@+id/general_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:orientation="vertical"
android:weightSum="6">
<ImageView
android:id="@+id/logo"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/logo_white"/>
<!-- UP-->
<LinearLayout
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:weightSum="3"
android:orientation="vertical"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/top_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/top_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/top_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/middle_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/middle_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/middle_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/bottom_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/bottom_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/bottom_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:weightSum="2"
android:orientation="horizontal">
<!-- Player X-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:gravity="center_horizontal"
android:id="@+id/nameOfPlayerX"
android:paddingTop="0dp"
android:textSize="22sp"
android:fontFamily="sans-serif-light"
android:textIsSelectable="false"
android:hint="Player X"
android:textColorHint="#FFFFFF"
android:inputType="textFilter"
android:maxLength="15"
/>
<TextView
android:id="@+id/player_x_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="56sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-light"
android:text="0" />
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:layout_centerInParent="true"/>
<!-- Player O-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:textColor="#ffffff"
android:id="@+id/nameOfPlayerO"
android:paddingTop="0dp"
android:textSize="22sp"
android:hint="Player O"
android:textColorHint="#FFFFFF"
android:inputType="textFilter"
android:maxLength="15"
/>
<TextView
android:id="@+id/player_o_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="0dp"
android:layout_marginTop="0dp"
android:textSize="56sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-light"
android:text="0" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="0dp"
android:text="Reset Score"
android:id="@+id/reset_btn"
android:layout_gravity="center_horizontal"
android:longClickable="true"
android:onClick="reset"
android:layout_alignParentBottom="true"
/>
<!-- not sure about that longClicable -->
<!--end of the bottom part for the players' names and score -->
</RelativeLayout>
使用different dimension xml for defining sizes and put it in values folder accordingly. see
values-sw720dp 10.1” tablet 1280x800 mdpi
values-sw600dp 7.0” tablet 1024x600 mdpi
values-sw480dp 5.4” 480x854 mdpi
values-sw480dp 5.1” 480x800 mdpi
values-xhdpi 4.7” 1280x720 xhdpi
values-xhdpi 4.65” 720x1280 xhdpi
values-hdpi 4.0” 480x800 hdpi
values-hdpi 3.7” 480x854 hdpi
values-mdpi 3.2” 320x480 mdpi
values-ldpi 3.4” 240x432 ldpi
values-ldpi 3.3” 240x400 ldpi
values-ldpi 2.7” 240x320 ldpi
为不同的值添加 dimens.xml
例如
<!-- phones -->
<dimen name="title_size">24sp</dimen>
<dimen name="button_width">64dp</dimen>
<!-- small tablets -->
<dimen name="title_size">32sp</dimen>
<dimen name="button_width">80dp</dimen>
<!-- big tablets -->
<dimen name="title_size">48sp</dimen>
<dimen name="button_width">128dp</dimen>
最后你可以做的是将滚动视图添加为父视图,这样你就可以确保用户至少滚动视图,如果在某些设备中它部分显示你的视图
希望这会有所帮助
如果您想使用权重均匀分布布局,那么您的父项必须是 LinearLayout,权重不适用于 RelativeLayout .我已经对您的布局进行了必要的更改,以使其间距均匀。请仔细看看权重是如何分配的。希望能帮助到你。也试试 KDeogharkar 的回答,因为这样会更有效,因为 嵌套权重不利于性能。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:theme="@style/PurpleTheme"
android:background="@drawable/background_1a"
tools:context="com.example.android.tictactoe.MainActivity"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/general_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="6">
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="5dp"
android:layout_gravity="center"
android:src="@drawable/logo_white"/>
<!-- UP-->
<LinearLayout
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:weightSum="3"
android:orientation="vertical"
android:gravity="center"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/top_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/top_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/top_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/middle_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/middle_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/middle_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/bottom_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/bottom_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/bottom_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/players_scoreboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="2"
android:layout_above="@+id/reset_btn"
android:orientation="horizontal">
<!-- Player X-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:gravity="center_horizontal"
android:id="@+id/nameOfPlayerX"
android:paddingTop="0dp"
android:textSize="22sp"
android:fontFamily="sans-serif-light"
android:textIsSelectable="false"
android:hint="Player X"
android:textColorHint="#FFFFFF"
android:inputType="textFilter"
android:maxLength="15"
/>
<TextView
android:id="@+id/player_x_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="56sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-light"
android:text="0" />
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:layout_centerInParent="true"/>
<!-- Player O-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:textColor="#ffffff"
android:id="@+id/nameOfPlayerO"
android:paddingTop="0dp"
android:textSize="22sp"
android:hint="Player O"
android:textColorHint="#FFFFFF"
android:inputType="textFilter"
android:maxLength="15"
/>
<TextView
android:id="@+id/player_o_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="0dp"
android:layout_marginTop="0dp"
android:textSize="56sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-light"
android:text="0" />
</LinearLayout>
</LinearLayout>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="0dp"
android:text="Reset Score"
android:id="@+id/reset_btn"
android:layout_gravity="center"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:longClickable="true"
android:onClick="reset" />
<!-- not sure about that longClicable -->
<!--end of the bottom part for the players' names and score -->
</LinearLayout>
我是 android 开发新手 。上个月我在优达学城参加了初级课程。我在正确定位我的布局时遇到了麻烦,因为屏幕上总是有一些东西没有显示,而且在不同的设备上它看起来也不同,尽管我根本没有使用特定的尺寸。对于我的井字游戏,我使用按钮来表示九个区域的十字和圆圈。我已经用这些布局尝试了几乎所有的东西,我需要你的帮助,因为我必须在 7 月 11 日之前准备好这个项目。谢谢你。这是完整的代码,因为我认为问题无法通过其他方式解决。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:theme="@style/PurpleTheme"
android:background="@drawable/background_1a"
tools:context="com.example.android.tictactoe.MainActivity"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="7">
<LinearLayout
android:id="@+id/general_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:orientation="vertical"
android:weightSum="6">
<ImageView
android:id="@+id/logo"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_margin="5dp"
android:src="@drawable/logo_white"/>
<!-- UP-->
<LinearLayout
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:weightSum="3"
android:orientation="vertical"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/top_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/top_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/top_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/middle_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/middle_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/middle_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/bottom_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/bottom_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/bottom_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:weightSum="2"
android:orientation="horizontal">
<!-- Player X-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:gravity="center_horizontal"
android:id="@+id/nameOfPlayerX"
android:paddingTop="0dp"
android:textSize="22sp"
android:fontFamily="sans-serif-light"
android:textIsSelectable="false"
android:hint="Player X"
android:textColorHint="#FFFFFF"
android:inputType="textFilter"
android:maxLength="15"
/>
<TextView
android:id="@+id/player_x_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="56sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-light"
android:text="0" />
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:layout_centerInParent="true"/>
<!-- Player O-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:textColor="#ffffff"
android:id="@+id/nameOfPlayerO"
android:paddingTop="0dp"
android:textSize="22sp"
android:hint="Player O"
android:textColorHint="#FFFFFF"
android:inputType="textFilter"
android:maxLength="15"
/>
<TextView
android:id="@+id/player_o_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="0dp"
android:layout_marginTop="0dp"
android:textSize="56sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-light"
android:text="0" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="0dp"
android:text="Reset Score"
android:id="@+id/reset_btn"
android:layout_gravity="center_horizontal"
android:longClickable="true"
android:onClick="reset"
android:layout_alignParentBottom="true"
/>
<!-- not sure about that longClicable -->
<!--end of the bottom part for the players' names and score -->
</RelativeLayout>
使用different dimension xml for defining sizes and put it in values folder accordingly. see
values-sw720dp 10.1” tablet 1280x800 mdpi
values-sw600dp 7.0” tablet 1024x600 mdpi
values-sw480dp 5.4” 480x854 mdpi
values-sw480dp 5.1” 480x800 mdpi
values-xhdpi 4.7” 1280x720 xhdpi
values-xhdpi 4.65” 720x1280 xhdpi
values-hdpi 4.0” 480x800 hdpi
values-hdpi 3.7” 480x854 hdpi
values-mdpi 3.2” 320x480 mdpi
values-ldpi 3.4” 240x432 ldpi
values-ldpi 3.3” 240x400 ldpi
values-ldpi 2.7” 240x320 ldpi
为不同的值添加 dimens.xml
例如
<!-- phones -->
<dimen name="title_size">24sp</dimen>
<dimen name="button_width">64dp</dimen>
<!-- small tablets -->
<dimen name="title_size">32sp</dimen>
<dimen name="button_width">80dp</dimen>
<!-- big tablets -->
<dimen name="title_size">48sp</dimen>
<dimen name="button_width">128dp</dimen>
最后你可以做的是将滚动视图添加为父视图,这样你就可以确保用户至少滚动视图,如果在某些设备中它部分显示你的视图
希望这会有所帮助
如果您想使用权重均匀分布布局,那么您的父项必须是 LinearLayout,权重不适用于 RelativeLayout .我已经对您的布局进行了必要的更改,以使其间距均匀。请仔细看看权重是如何分配的。希望能帮助到你。也试试 KDeogharkar 的回答,因为这样会更有效,因为 嵌套权重不利于性能。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:theme="@style/PurpleTheme"
android:background="@drawable/background_1a"
tools:context="com.example.android.tictactoe.MainActivity"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/general_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="6">
<ImageView
android:id="@+id/logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="5dp"
android:layout_gravity="center"
android:src="@drawable/logo_white"/>
<!-- UP-->
<LinearLayout
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
android:weightSum="3"
android:orientation="vertical"
android:gravity="center"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/top_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/top_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/top_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/middle_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/middle_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/middle_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_weight="1"
android:weightSum="3">
<Button
android:id="@+id/bottom_left_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/bottom_centre_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
<Button
android:id="@+id/bottom_right_btn"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="1dp"
android:layout_marginBottom="1dp"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:layout_marginTop="1dp"
android:enabled="true"
android:textColor="#5d178f"
android:textColorHighlight="#f1c918"
android:textSize="64sp"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/players_scoreboard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:weightSum="2"
android:layout_above="@+id/reset_btn"
android:orientation="horizontal">
<!-- Player X-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="1">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:gravity="center_horizontal"
android:id="@+id/nameOfPlayerX"
android:paddingTop="0dp"
android:textSize="22sp"
android:fontFamily="sans-serif-light"
android:textIsSelectable="false"
android:hint="Player X"
android:textColorHint="#FFFFFF"
android:inputType="textFilter"
android:maxLength="15"
/>
<TextView
android:id="@+id/player_x_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="56sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-light"
android:text="0" />
</LinearLayout>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:layout_centerInParent="true"/>
<!-- Player O-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:textColor="#ffffff"
android:id="@+id/nameOfPlayerO"
android:paddingTop="0dp"
android:textSize="22sp"
android:hint="Player O"
android:textColorHint="#FFFFFF"
android:inputType="textFilter"
android:maxLength="15"
/>
<TextView
android:id="@+id/player_o_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="0dp"
android:layout_marginTop="0dp"
android:textSize="56sp"
android:textColor="#FFFFFF"
android:fontFamily="sans-serif-light"
android:text="0" />
</LinearLayout>
</LinearLayout>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_weight="1"
android:layout_height="0dp"
android:text="Reset Score"
android:id="@+id/reset_btn"
android:layout_gravity="center"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:longClickable="true"
android:onClick="reset" />
<!-- not sure about that longClicable -->
<!--end of the bottom part for the players' names and score -->
</LinearLayout>