我的应用程序(游戏)的主菜单使用标准的Android按钮。除了 Nexus 7 with Android 4.4.2 之外,它在我的所有设备上都能正常使用。问题如下:
在任何一种情况下,按钮的文字都会突然消失:
setEnabled(boolean)
在按钮例如,如果我按下“加载游戏”,按下按钮会在按下事件期间正确突出显示,但“加载游戏”会完全消失(按钮有空文本)。
如果我删除所有自定义样式和行为,并且只使用默认字体等默认Android按钮,则问题仍然存在。
如果我将targetSdkVersion降低到18(从19开始),即使在Nexus 7上也能正常工作。
知道KitKat在这方面有什么变化吗?我没有发现任何可疑之处。
我的revalant XML代码:
<TableLayout
android:id="@+id/layoutGameMainmenu"
android:layout_width="wrap_content"
android:layout_height="83dip"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:orientation="vertical"
android:gravity="center_vertical"
android:visibility="gone" >
<TableRow>
<Button
android:id="@+id/buttonLoadGame"
android:layout_width="174dip"
android:layout_height="40dip"
android:layout_marginBottom="2dip"
android:layout_marginRight="30dip"
android:background="@drawable/button_gamemainmenu"
android:text="buttonLoadGame"
android:textColor="@color/button_gamemainmenu_text"
android:textScaleX="0.9"
android:textSize="16dp" />
<Button
android:id="@+id/buttonSettings"
android:layout_width="174dip"
android:layout_height="40dip"
android:layout_marginBottom="2dip"
android:layout_marginLeft="30dip"
android:background="@drawable/button_gamemainmenu"
android:text="buttonSettings"
android:textColor="@color/button_gamemainmenu_text"
android:textScaleX="0.9"
android:textSize="16dp" />
</TableRow>
<TableRow>
<Button
android:id="@+id/buttonStartGame"
android:layout_width="174dip"
android:layout_height="40dip"
android:layout_marginBottom="1dip"
android:layout_marginRight="30dip"
android:background="@drawable/button_gamemainmenu"
android:text="buttonStartGame"
android:textColor="@color/button_gamemainmenu_text"
android:textScaleX="0.9"
android:textSize="16dp" />
<Button
android:id="@+id/buttonQuit"
android:layout_width="174dip"
android:layout_height="40dip"
android:layout_marginBottom="1dip"
android:layout_marginLeft="30dip"
android:background="@drawable/button_gamemainmenu"
android:text="buttonQuit"
android:textColor="@color/button_gamemainmenu_text"
android:textScaleX="0.9"
android:textSize="16dp" />
</TableRow>
</TableLayout>
有关上述代码的重要说明:
android:textColor
和android:background
属性,问题仍然存在。在这种情况下,我的按钮将具有默认外观(而不是他们的游戏特定样式),但问题仍然存在。最后,有关我的全局样式/主题的一些信息:
在AndroidManifest中,我将Application
主题设置为MyCustomTheme
。 mycustomtheme.xml
的内容:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyCustomTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
<item name="android:soundEffectsEnabled">false</item>
</style>
</resources>
最后,我的styles.xml
如下(但似乎我没有从任何地方引用它的样式,这似乎是我们制作游戏全屏时的旧代码,或Android是否在任何地方使用它默认):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme" parent="android:Theme">
</style>
<style name="Theme.TranslucentWoTitle" parent="android:Theme.Translucent">
<item name="android:windowNoTitle">true</item>
</style>
</resources>
答案 0 :(得分:6)
查看您的XML文件,我仍然认为您的项目出现了问题。
此最小示例不会在Nexus 7 2013 4.4.2(minSDK=8
,targetSDK=19
)上重现问题:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
获取XML并删除背景/文本颜色也不会重现它:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TableLayout
android:id="@+id/layoutGameMainmenu"
android:layout_width="wrap_content"
android:layout_height="83dip"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:orientation="vertical"
android:gravity="center_vertical">
<TableRow>
<Button
android:id="@+id/buttonLoadGame"
android:layout_width="174dip"
android:layout_height="40dip"
android:layout_marginBottom="2dip"
android:layout_marginRight="30dip"
android:text="buttonLoadGame"
android:textScaleX="0.9"
android:textSize="16dp" />
<Button
android:id="@+id/buttonSettings"
android:layout_width="174dip"
android:layout_height="40dip"
android:layout_marginBottom="2dip"
android:layout_marginLeft="30dip"
android:text="buttonSettings"
android:textScaleX="0.9"
android:textSize="16dp" />
</TableRow>
<TableRow>
<Button
android:id="@+id/buttonStartGame"
android:layout_width="174dip"
android:layout_height="40dip"
android:layout_marginBottom="1dip"
android:layout_marginRight="30dip"
android:text="buttonStartGame"
android:textScaleX="0.9"
android:textSize="16dp" />
<Button
android:id="@+id/buttonQuit"
android:layout_width="174dip"
android:layout_height="40dip"
android:layout_marginBottom="1dip"
android:layout_marginLeft="30dip"
android:text="buttonQuit"
android:textScaleX="0.9"
android:textSize="16dp" />
</TableRow>
</TableLayout>
</RelativeLayout>
最后,我注意到android:textColor="button_gamemainmenu_text"
,这不是默认的Android行为,并建议您以自己的方式处理文字颜色。我坚信删除这种自定义行为可以解决问题。
答案 1 :(得分:3)
也许你可以使用“Hierarchy View” - Eclipse中的Perspective来调试你的布局获得一些新的见解?它非常有用,因为您可以在运行时读取测量的布局参数。至少它应该引导你走上正确的轨道。
答案 2 :(得分:2)
我遇到了同样的问题。 Nexus 7&amp; S上的文字消失了。 Nexus 10。
发生错误的场景:
单击按钮将文本设置为textView。
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true" >
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button1"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:text="Record"
android:textColor="@android:color/black" />
</TableRow>
</TableLayout>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="TextView" />
要解决此问题,您可以从TableLayout to LinearLayout
或
设置按钮的宽度。这对我有用。
答案 3 :(得分:1)
您好我已经使用您的自定义样式进行了测试。我使用了硬编码颜色,因为我无法使用您使用的文本颜色。它适用于所有设备。我无法在nexus 7上测试它。因为我没有这个设备。希望它能在nexus7中运行。请检查更新的文件,并让我知道反馈。如果您使用过任何选择器,则发布选择器文件。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cccccc"
android:orientation="vertical" >
<TableLayout
android:id="@+id/layoutGameMainmenu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="5dp"
android:visibility="visible" >
<TableRow>
<Button
android:id="@+id/buttonLoadGame"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:layout_marginBottom="2dip"
android:layout_marginRight="30dip"
android:text="buttonLoadGame"
android:textColor="#000000"
android:textScaleX="0.9"
android:textSize="16sp" />
<Button
android:id="@+id/buttonSettings"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:layout_marginBottom="2dip"
android:layout_marginLeft="30dip"
android:text="buttonSettings"
android:textColor="#000000"
android:textScaleX="0.9"
android:textSize="16sp" />
</TableRow>
<TableRow>
<Button
android:id="@+id/buttonStartGame"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:layout_marginBottom="1dip"
android:layout_marginRight="30dip"
android:text="buttonStartGame"
android:textColor="#000000"
android:textScaleX="0.9"
android:textSize="16sp" />
<Button
android:id="@+id/buttonQuit"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:layout_marginBottom="1dip"
android:layout_marginLeft="30dip"
android:text="buttonQuit"
android:textColor="#000000"
android:textScaleX="0.9"
android:textSize="16sp" />
</TableRow>
</TableLayout>