【发布时间】:2014-06-28 15:12:27
【问题描述】:
我正在创建一个简单的登录活动,并试图使编辑文本在所有设备上看起来都相同。在 Android Studio 中,它在所有 API 上看起来都一样,但在真实设备上看起来却大不相同。我该怎么做才能使它们看起来都一样?
这是它在 Android Studio 中的样子
这就是它在真实设备上的样子
任何帮助将不胜感激。我还在学习 Android 开发。
【问题讨论】:
-
不要相信模拟器!!!
我正在创建一个简单的登录活动,并试图使编辑文本在所有设备上看起来都相同。在 Android Studio 中,它在所有 API 上看起来都一样,但在真实设备上看起来却大不相同。我该怎么做才能使它们看起来都一样?
这是它在 Android Studio 中的样子
这就是它在真实设备上的样子
任何帮助将不胜感激。我还在学习 Android 开发。
【问题讨论】:
小部件的背景是 API 级别相关的。
将此 xml 设置为您的 EditText 背景属性。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#4C000000"/>
<corners android:bottomRightRadius="5dp"
android:bottomLeftRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp"/>
</shape>
这将在每个 API 上与您的 EditText 具有相同的外观和感觉。
【讨论】:
这完全取决于您使用模拟器的方式。模拟器,从常见的 AVD(在 Eclipse 或那种 IDE 中使用)直到 Android Studio,将使用默认皮肤来显示开发环境中的小部件和组件。
您可以安装制造商的设备皮肤来模拟您的模拟器作为原始模拟器。看那个description from the Samsung official website:
模拟器皮肤是一种在模拟的 GALAXY S2 上测试您的 Android 应用程序的简单方法。但是,该仿真并未模拟实际设备的所有功能。该仿真允许您查看应用程序的显示如何缩放到 GALAXY S2 的屏幕。
在这种情况下,它会提高您的可测试性,但也建议始终在真实设备中进行测试以获得更好的结果。
【讨论】:
这可能是因为您没有为您的应用程序指定主题。并且根据documentationandroid选择主题的规则如下:
如果应用未在其清单中明确请求主题,Android 4.0 将根据应用的 targetSdkVersion 确定默认主题,以保持应用的原始预期:对于 值小于 11,@android:style/Theme; 11 到 13 之间 @android:style/Theme.Holo; 14岁及以上 @android:style/Theme.DeviceDefault.
您可以在以下thread找到更多详细信息。
【讨论】:
在你的drawable文件夹中创建edittext_style.xml,
<?xml version="1.0" encoding="utf-8"?>
<item><layer-list>
<item><shape>
<gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" />
<stroke android:width="1dp" android:color="#CECFCE" />
<corners android:radius="0dp" />
<padding android:bottom="3dp" android:left="3dp" android:right="8dp" android:top="3dp" />
</shape></item>
</layer-list></item>
在style.xml中定义如下代码,
<!-- Edittext Style -->
<style name="edittext_style">
<item name="android:background">@drawable/edittext_style</item>
<item name="android:layout_marginLeft">10dp</item>
<item name="android:layout_marginRight">10dp</item>
<item name="android:layout_marginBottom">10dp</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingBottom">5dp</item>
<item name="android:popupBackground">#DFFFFFFF</item>
</style>
然后就可以了,只需根据您的要求使用颜色代码,
<EditText
android:id="@+id/email"
style="@style/edittext_style"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
【讨论】: