在当前主题中未找到样式'mapViewStyle'

24

我正在制作一个使用谷歌地图的应用程序。但是在我的xml文件中,我遇到了错误:“在当前主题中找不到样式'mapViewStyle'”。我已经给予了网络权限,并在应用程序标记中使用了谷歌地图库。

有谁可以帮助我解决这个问题。

非常感谢

以下是我的xml文件...

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        />
  <com.google.android.maps.MapView
    android:id="@+id/mapview1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:enabled="true"
    android:clickable="true"
    android:apiKey="0ACHOtlugQlOP_-siR3LLyIBjv1SwpKWimIY8jw" />
</Relativelayout>

请展示您发生"mapViewStyle"样式错误的XML文件。 - user370305
1
我已经编辑了我的帖子,请看一下代码。 - ekjyot
你在哪里得到了那个错误信息? - Finn Larsen
这是整个XML代码吗?如果不是,请粘贴完整的代码...如果是的话,那么你的mapview标签在哪里?地图应用程序XML文件示例:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.google.android.maps.MapView android:id="@+id/map" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="your_api_key_here" android:clickable="true" /> </RelativeLayout> 在your_api_key_here的位置,粘贴您的唯一Google API密钥。 - Urban
这可能对一些人有所帮助。 - Mohammedsalim Shivani
11个回答

24

我的回答可能有点晚,但我希望它能够涉及到实际原因并且对那些未来会搜索相同问题的人有所帮助。

这种类型的错误,

1. Android Google Maps Failed to find style 'mapViewStyle' in current theme
2. Failed to find style 'imageButtonStyle' in current theme 
3. Failed to find style 'editTextStyle' in current theme 
4. Failed to find style 'textViewStyle' in current theme 

无论以上列表中是什么内容,

最终的原因是,

我们为 layout 选择了不可用的 Theme

这可能是由于以下原因导致的:

  1. 所选择的 themethemes.xml 文件中不可用。
  2. 所选的 theme 属于更高版本的 sdk,但我们当前的目标 sdk 是较低的版本。

这个问题通常会发生在以下情况下:

  1. 当您复制整个 layout 文件并尝试在您的 project 中实现它时。 a. 您可能忘记复制 themes.xml 文件 b. 您可能拥有较低的 target sdk,而原始的 layout 是使用更高的 target sdk 创建的。

解决此问题的方法是:

(打开并在 Graphical Layout View查看 layout 文件,并查看右上角。 您已选择的 layoutthemes 在那里。)

  1. 因此,单击 theme 选择的下拉列表,并根据您的项目 themestargeted sdk themes 选择可用的 themes(OR)
  2. 如果 themecustom 的,如果您需要它,则从您复制 layout xml 文件的源中将 themes.xml 文件复制到您的项目中。 (OR)
  3. 如果 themesdk 可用的 theme,如果您需要它,则根据所选的 theme 更改您的 target

希望这对某些人有所帮助。


1
在发布复制粘贴的样板/逐字回答多个问题时要小心,社区往往会将其标记为“垃圾邮件”。如果您这样做,通常意味着这些问题是重复的,请将它们标记为重复。 - Kev
谢谢@Kev。我在刚来这里的时候做过这件事...发完后我意识到了,我不会再这样做了...感谢您警告我的关注... - Kartihkraj Duraisamy
是的,我更改了我的应用程序主题名称,但在Eclipse的设计视图中仍然引用旧的主题。好建议! - Droid Chris

2

我不知道为什么,但如果你添加一个明确的样式并在/values/styles.xml中定义它,这个错误将会消失。

styles.xml:

<style name="mapView">
    <item name="android:gravity">center</item>
</style>

并且布局:

<com.google.android.maps.MapView
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="YOUR_API_KEY"
    android:visibility="visible"
    style="@style/mapView"
/>

看起来 com.google.android.maps.MapView 确实 需要声明某种样式。


2
这些错误的另一个原因可能是内部Eclipse错误

在这种情况下,解决方法是:

  1. 关闭xml布局文件
  2. 重新启动Eclipse(甚至是ADT,因为我听说那里也会出现这个问题)

通常值得一试(特别是当您突然遇到此错误时),因为它不需要太多时间。虽然对于OP可能不是这种情况,但这仍然可以帮助其他人进行搜索。


1
关闭XML布局文件解决了我的问题。谢谢! - Chris Fremgen

1
每个安卓主题并不适合所有类型的视图。因此,我们应该为我们的视图类型选择一个合适的主题。
问题如下
如果主题不合适,它会给我们带来缺少样式的错误。
enter image description here

解决方案如下
1.首先选择主题栏。
enter image description here

2.选择您的视图所需的主题。

enter image description here

3. 选择主题后按下“确定”按钮。
如果该主题适合您的视图,则会呈现出来,否则请选择另一个主题并尝试,直到找到适合您的应用程序的主题。
每当您的主题适合时,它将呈现为下面的图片所示。 enter image description here


1

您需要将Android 2.2更改为Android 3.0,同时提供应用程序的ID、用户权限和子级。


0

这个错误是由于mapViewStyle缺少某些图标或属性导致的。如果您曾经在Android设备上应用过任何自定义主题,那么您可能会遇到像“缺少资源”或“主题编译不正确”等错误。这些错误是由于每个手机外观(如按钮、菜单、状态栏等)缺乏图标或布局而引起的。

与mapViewStyle类似。在项目创建期间,您可能已经为应用程序选择了默认主题。该主题缺少mapViewStyle的某些组件,例如按钮图标或样式(只是提供想法,我不知道这是否正确)。我想您可能已经明白了要点。

现在,为了消除错误,请进入res>values>styles.xml

删除以前的主题行并放置这一行。

<style name="AppBaseTheme" parent="android:Theme.Light">

上述示例仅用于让您理解并给您一个问题的广泛概念。我不断言它是100%正确的。

如果这个答案有用,请将其标记为有用。


0

通过在预览中单击“刷新”按钮或关闭xml,然后再次打开它来刷新xml布局以解决我的问题。


0
确保您已将自定义主题部分添加到res文件夹下不同values文件夹中存在的所有其他styles.xml中。
我遇到过类似的问题。在我的情况下,我已经在res文件夹下的values-large文件夹中添加了一个自定义主题,并且在运行时它可以工作,但在eclipse中却出现错误。 因此,我尝试将自定义部分(在我的情况下,完全有3个标签添加到styles.xml文件中)添加到所有其他styles.xml文件中。 即,在values-normal-hdpi、values-normal-mdpi、valuse-v11和values-v14下的styles.xml文件中... 然后就解决了我的问题!

0

确保在不同的值下所有其他styles.xml中都包含您的自定义主题部分。

我有类似的问题。

在我的情况下,我在res下的values-large文件夹中添加了一个自定义主题。虽然它在运行时工作正常,但在eclipse中会出现与您一样的错误。

所以我尝试将自定义部分(在我的情况下,完全有3个标签添加到styles.xml文件中)添加到所有其他styles.xml文件中。即values-normal-hdpivalues-normal-mdpivaluse-v11values-v14下面的styles.xml文件...

结果BOOM!!! 它解决了我浪费整天的问题。


0

虽然我确定这种方法并不适用于每个人,但对我来说,我只是在预览窗口中更改了主题为Theme.AppCompat.Light

Theme Drop-down Circled in Red

在某些情况下,似乎仅仅设置正确的主题就是解决方案。在所有这些选择中,选择哪个主题呢?首先选择兼容性主题;之后,祝你好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接