您看到的差异与主题相关。您在设备中看到的 TextFields 使用的是 Holo 主题,因为其他屏幕截图中的那些没有使用它。
如果您想在每台设备中使用 holo 主题,这里有一个解决方案。(我没有测试,但我想这不是你想要的)
另一方面,如果您的目标是摆脱那个全息主题,您可以只使用另一个主题,例如黑色。只需将清单中的主题定义替换为:
<activity android:name="MainActivity"
android:theme="@android:style/Theme.Black.NoTitleBar">
你应该没事!
编辑
快速编辑:我正在使用 4.1 来编译它。您使用的是哪个版本?尝试使用 4.1。
您的问题绝对与主题相关。试试我在下面发布的这段代码,如果这在您的设备上不起作用,我可以想到两个原因。一是您没有使用官方的Android。如果您的设备中有一些自定义 rom,例如 Cyanogen,可能会覆盖您的主题。其次,您在设备中设置了一些首选项,该首选项覆盖了您活动中的首选项。我发现这真的不太可能,我以前从未听说过它,但它可能是可能的,因为来自不同制造商的许多不同的操作系统都知道发生了什么。
真的不用放到github上,代码很简单我就放在这里,附上截图:
我的清单设置了两个主题:
<activity
android:name=".MyActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MyActivity2"
android:label="@string/app_name"
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen">
</activity>
我的活动代码,它们是相同的,除了显然是为了开始下一个活动
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.edittext);
}
public void ChangeActivity(View v){
Intent i = new Intent(this, MyActivity.class);
startActivity(i);
}
我可以使用的最简单的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:onClick="ChangeActivity"/>
</LinearLayout>
最后,android 3.2(左)和 4.1(右)使用全息和黑色主题的截图:
黑色主题:
全息主题:
编辑
如果您只是想摆脱标题栏,您可以以编程方式进行。在您的 onCreate 方法和 setContentView 之前使用以下内容:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
这将摆脱标题栏,将应用程序设置为全屏并且不会弄乱主题。