Android 不同屏幕尺寸的计算器用户界面

Android 不同屏幕尺寸的计算器用户界面,android,Android,我是android新手。我正在做计算器,但我面临一个问题。在android studio中,UI看起来不错,但当我在Nexus 6(虚拟设备)上运行它时,它看起来不支持不同的屏幕大小。我了解到DP(设备独立像素)默认情况下适合每个屏幕大小的元素,但在这种情况下,它不起作用。我现在应该做什么来支持每个设备?我附上用户界面代码和图片以了解更多信息 这是XML布局文件。我使用相对布局作为父布局,内部相对布局使用多个线性布局 <LinearLayout android:id="@+id

我是android新手。我正在做计算器,但我面临一个问题。在android studio中,UI看起来不错,但当我在Nexus 6(虚拟设备)上运行它时,它看起来不支持不同的屏幕大小。我了解到DP(设备独立像素)默认情况下适合每个屏幕大小的元素,但在这种情况下,它不起作用。我现在应该做什么来支持每个设备?我附上用户界面代码和图片以了解更多信息

这是XML布局文件。我使用相对布局作为父布局,内部相对布局使用多个线性布局

<LinearLayout
    android:id="@+id/linearLayoutText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/txtResult"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="serif-monospace"
        android:gravity="right"
        android:textColor="@color/cyan"
        android:textSize="@dimen/txtResultTextSize" />

    <TextView
        android:id="@+id/txtOperation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="monospace"
        android:gravity="right"
        android:padding="@dimen/txtOperationPadding"
        android:textColor="@color/cyan"
        android:textSize="@dimen/txtOperationTextSize" />

</LinearLayout>

<LinearLayout
    android:id="@+id/linearLayoutBtnDecimals"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/linearLayoutText"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/marginBottom"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btnFactorial"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="!"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btnDel"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="«"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btnC"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="C"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/marginBottom"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btnSqrRoot"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="√"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btnForwardBracket"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="("
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btnBackwardBracket"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text=")"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/marginBottom"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn7"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="7"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btn8"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="8"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btn9"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="9"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/marginBottom"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn4"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="4"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btn5"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="5"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btn6"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="6"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/marginBottom"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn1"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="1"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="2"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btn3"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="3"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btn0"
            android:layout_width="@dimen/btn0Width"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="0"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btnDot"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="."
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

    </LinearLayout>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignBaseline="@+id/linearLayoutBtnDecimals"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_below="@+id/linearLayoutText"
    android:layout_toEndOf="@+id/linearLayoutBtnDecimals"
    android:layout_toLeftOf="@+id/linearLayoutBtnDecimals"
    android:orientation="vertical">

    <Button
        android:id="@+id/btnDiv"
        android:layout_width="@dimen/btnWidth"
        android:layout_height="@dimen/btnHeight"
        android:layout_marginBottom="@dimen/marginBottom"
        android:background="@color/dark"
        android:fontFamily="monospace"
        android:text="÷"
        android:textColor="@color/cyan"
        android:textSize="@dimen/btnTextSize" />

    <Button
        android:id="@+id/btnMul"
        android:layout_width="@dimen/btnWidth"
        android:layout_height="@dimen/btnHeight"
        android:layout_marginBottom="@dimen/marginBottom"
        android:background="@color/dark"
        android:fontFamily="monospace"
        android:text="×"
        android:textColor="@color/cyan"
        android:textSize="@dimen/btnTextSize" />

    <Button
        android:id="@+id/btnMinus"
        android:layout_width="@dimen/btnWidth"
        android:layout_height="@dimen/btnHeight"
        android:layout_marginBottom="@dimen/marginBottom"
        android:background="@color/dark"
        android:fontFamily="monospace"
        android:text="-"
        android:textColor="@color/cyan"
        android:textSize="@dimen/btnTextSize" />

    <Button
        android:id="@+id/btnPlus"
        android:layout_width="@dimen/btnWidth"
        android:layout_height="@dimen/btnHeight"
        android:layout_marginBottom="@dimen/marginBottom"
        android:background="@color/dark"
        android:fontFamily="monospace"
        android:text="+"
        android:textColor="@color/cyan"
        android:textSize="@dimen/btnTextSize" />

    <Button
        android:id="@+id/btnEqual"
        android:layout_width="@dimen/btnWidth"
        android:layout_height="@dimen/btnEqualHeight"
        android:layout_marginBottom="@dimen/marginBottom"
        android:background="@color/dark"
        android:fontFamily="monospace"
        android:text="="
        android:textColor="@color/cyan"
        android:textSize="@dimen/btnTextSize" />
</LinearLayout>

这是dimens.xml文件

<dimen name="btnWidth">95dp</dimen>
<dimen name="btnHeight">62dp</dimen>
<dimen name="btn0Width">191dp</dimen>
<dimen name="btnMarginRight">1dp</dimen>
<dimen name="btnTextSize">40sp</dimen>
<dimen name="btnEqualHeight">125dp</dimen>
<dimen name="marginBottom">1sp</dimen>
<dimen name="txtResultTextSize">80sp</dimen>
<dimen name="txtOperationTextSize">30sp</dimen>
<dimen name="txtOperationPadding">5dp</dimen>
95dp
62dp
191dp
1dp
40便士
125dp
1sp
80便士
30便士
5dp
那么,我现在应该做什么来设置每个屏幕大小设备的布局呢? 提前感谢。

更好地使用。对于不同的屏幕类型,您也可以考虑不同的<强> DIME.XML(可以通过创建新的DimeSS.xml文件,其中包含“强>屏幕密度< /强> &强>屏幕大小< /强>),这将应用于相应类型的屏幕

例如:


不要将布局高度匹配父级到父级布局以外的内部布局,而不是在dp中指定固定大小,您可以对子视图(按钮、文本视图等)使用换行内容。也可以使用权重和

<LinearLayout
    android:id="@+id/linearLayoutBtnDecimals"
    android:layout_width="wrap_content"
    android:layout_height="**wrap_content**"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/linearLayoutText"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/marginBottom"
        android:orientation="horizontal">

        <Button
            android:id="@+id/btnFactorial"
            android:layout_width="@dimen/btnWidth"
            android:layout_height="@dimen/btnHeight"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="!"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btnDel"
            android:layout_width="**wrap_content**"
            android:layout_height="**wrap_content**"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="«"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />

        <Button
            android:id="@+id/btnC"
            android:layout_width="**wrap_content**"
            android:layout_height="**wrap_content**"
            android:layout_marginRight="@dimen/btnMarginRight"
            android:background="@color/darkGrey1"
            android:fontFamily="monospace"
            android:text="C"
            android:textColor="@color/lightGrey4"
            android:textSize="@dimen/btnTextSize" />
</LinearLayout>


如果用户界面使用固定大小,则必须根据屏幕大小创建不同的dimen文件夹。另一个选项是,您可以使用weightSum相应地布局和管理视图(UI中的按钮)。使用weightSum是最佳选项。简化设计:将按钮放在GridView或GridLayout中。对结果感到满意。检查此项可能会有帮助