按钮未显示在真实设备中,但显示在 android 的模拟器中

Posted

技术标签:

【中文标题】按钮未显示在真实设备中,但显示在 android 的模拟器中【英文标题】:Buttons are not shown in real device but shown in emulator in android 【发布时间】:2016-03-14 04:40:34 【问题描述】:

我有一个linearlayout,它有两个按钮cancel & download,分别用于取消或下载图像。当我在模拟器 [Emulator is Nexus-5] 上运行应用程序时一切正常,这两个按钮都会显示,但是当我在真实设备上测试我的应用程序时 [我的设备是 samsung-core]。

图片是从互联网上加载的,然后这个 LiarLayout 会显示出来,最初它是隐藏的。

这是我设备上的screenshot

这是我的模拟器screenshot

这是布局文件

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:padding="16dp">

    <EditText
        android:id="@+id/et_pic_url"
        android:layout_
        android:layout_
        android:hint="Enter pic url here" />

    <Button
        android:id="@+id/bt_pic_search"
        android:layout_
        android:layout_
        android:layout_gravity="center_horizontal"
        android:text="Send" />

</LinearLayout>

<LinearLayout
    android:layout_
    android:layout_
    >

    <ImageView
        android:id="@+id/iv_pic"
        android:layout_
        android:layout_
        android:layout_weight="2"
        android:paddingTop="10dp"
         />
</LinearLayout>

<LinearLayout
    android:id="@+id/linear_layout_download_cancel_button"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:orientation="horizontal"
    android:paddingLeft="32dp"
    android:paddingRight="32dp">

    <Button
        android:id="@+id/bt_cancel_download"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:text="Cancel" />

    <Button
        android:id="@+id/bt_pic_download"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:text="Download" />
</LinearLayout>

我猜这是因为屏幕高度。但是为什么这两个按钮被隐藏了。是什么让我的布局文件中发生了这种奇怪的事情。

谢谢 - 苏拉杰

【问题讨论】:

您的 2 个按钮被隐藏,因为您的布局比屏幕尺寸长 【参考方案1】:
<LinearLayout
    android:layout_
    android:layout_
    android:orientation="vertical"
android:weightsum="10"

>

<LinearLayout
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:padding="16dp"
android:weight="1"
>

    <EditText
        android:id="@+id/et_pic_url"
        android:layout_
        android:layout_
        android:hint="Enter pic url here" />

    <Button
        android:id="@+id/bt_pic_search"
        android:layout_
        android:layout_
        android:layout_gravity="center_horizontal"
        android:text="Send" />

</LinearLayout>

<LinearLayout
    android:layout_
    android:layout_
android:weight="8"
    >

    <ImageView
        android:id="@+id/iv_pic"
        android:layout_
        android:layout_
        android:layout_weight="2"
        android:paddingTop="10dp"
         />
</LinearLayout>

<LinearLayout
    android:id="@+id/linear_layout_download_cancel_button"
    android:layout_
    android:layout_
    android:layout_weight="1"
    android:orientation="horizontal"
    android:paddingLeft="32dp"
    android:paddingRight="32dp">

    <Button
        android:id="@+id/bt_cancel_download"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:text="Cancel" />

<Button
        android:id="@+id/bt_pic_download"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:text="Download" />
</LinearLayout>

enter code here

Your imageview is match parent, so it cover the screen, use the above code. it will workl fine

【讨论】:

【参考方案2】:

试试 ScrollView。按钮可能位于您的 ImageView(并设置您的图像视图属性“wrap_content”)或您的布局下方。

根据你的代码演示如下:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_>

    <LinearLayout
        android:layout_
        android:layout_
        android:orientation="vertical">

        <LinearLayout

            android:layout_
            android:layout_
            android:orientation="vertical"
            android:padding="16dp">

            <EditText
                android:id="@+id/et_pic_url"
                android:layout_
                android:layout_
                android:hint="Enter pic url here" />

            <Button
                android:id="@+id/bt_pic_search"
                android:layout_
                android:layout_
                android:layout_gravity="center_horizontal"
                android:text="Send" />

        </LinearLayout>

        <LinearLayout
            android:layout_
            android:layout_>

            <ImageView
                android:id="@+id/iv_pic"
                android:layout_
                android:layout_
                android:layout_weight="2"
                android:paddingTop="10dp"
                />
        </LinearLayout>

        <LinearLayout
            android:id="@+id/linear_layout_download_cancel_button"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:orientation="horizontal"
            android:paddingLeft="32dp"
            android:paddingRight="32dp">

            <Button
                android:id="@+id/bt_cancel_download"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:text="Cancel" />

            <Button
                android:id="@+id/bt_pic_download"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:text="Download" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>

【讨论】:

【参考方案3】:

因为设备中没有空间显示按钮。如下操作

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_
                android:layout_>


    <LinearLayout
            android:layout_
            android:layout_
            android:orientation="vertical"
            android:padding="16dp"
    android:layout_above="@+id/linear_layout_download_cancel_button"
    >

        <EditText
                android:id="@+id/et_pic_url"
                android:layout_
                android:layout_
                android:hint="Enter pic url here"/>

        <Button
                android:id="@+id/bt_pic_search"
                android:layout_
                android:layout_
                android:layout_gravity="center_horizontal"
                android:text="Send"/>  


        <ImageView
                android:id="@+id/iv_pic"
                android:layout_
                android:layout_
                android:layout_weight="2"
                android:paddingTop="10dp"
        />
    </LinearLayout>

    <LinearLayout
            android:id="@+id/linear_layout_download_cancel_button"
            android:layout_
            android:layout_
            android:layout_weight="1"
            android:orientation="horizontal"
            android:paddingLeft="32dp"
            android:paddingRight="32dp"
            android:layout_alignParentBottom="true"
    >

        <Button
                android:id="@+id/bt_cancel_download"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:text="Cancel"/>

        <Button
                android:id="@+id/bt_pic_download"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:text="Download"/>
    </LinearLayout>
</RelativeLayout>

【讨论】:

以上是关于按钮未显示在真实设备中,但显示在 android 的模拟器中的主要内容,如果未能解决你的问题,请参考以下文章

显示软键盘时,Android 设备上的按钮单击事件未触发。

在android工作室中没有显示的真实设备[重复]

Instant App 的内部测试未显示“立即尝试”按钮

菜单未显示在 Android 设备上

我正在尝试在我的设备上获得真实的广告,但应用在我的 Android 应用上显示测试广告

Facebook警告输入凭据未在真实设备IOS6上出现