按钮未显示在真实设备中,但显示在 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 的模拟器中的主要内容,如果未能解决你的问题,请参考以下文章