为什么Eclipse创build新项目时会自动添加appcompat v7库支持?
为什么Eclipse创build新项目时会自动添加appcompat v7
库支持?
我正在创build一个MainActivity
应该扩展Activity
的简单项目,但事实并非如此。 Eclipse自动添加操作栏支持。
如何在没有appcompat
库的情况下创build一个简单的项目? 仅供参考,我已经下载了最新版本的ADT和最近更新的一切。 我正在使用Window 7 x64。
正如在Android的支持库概述中所说的那样,默认情况下包含支持库是一种很好的做法,因为设备的差异性很大,以及不同版本的Android(以及所提供的API)之间存在的碎片。
这就是为什么通过Android Development Tools (ADT)
在Eclipse中包含的Android 代码模板工具默认集成它们的原因。
我注意到,在示例中,您的目标是API 15
,但是您的软件包所需的SDK为API 10
,为此,兼容性库可以提供大量向后兼容的API。 一个例子就是在运行这个系统的旧版本的设备上使用在API 11
(Android 3.0 Honeycomb)上出现的Fragment API
的能力。
还要注意的是,默认情况下,您可以停用支持库的自动包含。
创build一个新的Android Application Project
并取消选中步骤二中的Create activity
(configuration项目)。
为什么我的eclipse自动添加appcompat v7库支持,只要我创build一个新的项目
因为您的目标SDK设置为15,默认情况下Action Bar处于打开状态,您支持的最小SDK设置为10. Action Bar出现在11,所以您需要一个支持库,Eclipse会为您添加它。 参考。
您可以在项目属性的构buildpath中configuration项目库。
Eclipse会自动创buildappcompat_v7。因为Kitkat Api自己启动了它自动添加appcompat_v7
和fragment_main.xml
。
解决这些问题的最佳途径:
-
首先在项目中,
Right click->properties->Android
。在这里你可以看到在Reference
放置了red marked appcompat
。 点击并删除它。然后在Project Build Target
勾选正确的目标名称。 -
删除在Eclipse中创build的fragment_main.xml和Appcompat文件。
-
编辑并更改您的activity_main.xml,如下所示:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>
-
在res / values / styles.xml中:
<resources> <style name="AppBaseTheme" parent="android:Theme.Light"> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> </style> </resources>
-
在res / values-v11 / styles.xml中,你必须像这样改变:
<resources> <style name="AppBaseTheme" parent="android:Theme.Holo.Light"> </style> </resources>
-
在res / values-v14 / styles.xml中,您必须像这样更改:
<resources> <style name="AppBaseTheme" parent="android:Theme.Light"> </style> <style name="AppTheme" parent="AppBaseTheme"> </style> </resources>
-
改变你的菜单/ main.xml像这样:
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings"/> </menu>
-
最后像这样改变你的MainActivity.java :
import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
LikeWise你必须这样做创build一个新的项目
这是因为您的最低SDK版本设置为10. ActionBar
是在API 11中引入的.Eclipse自动添加它,所以您的应用程序可以在您所支持的所有Android版本中看起来更加一致。
如果你不是针对2.x版本,你可以设置4.x的最低sdk版本,然后创build项目。 Appcompat V7 lib不会被创build。
我是新来的Android和项目appcompat_v7总是创build时,我创build新的Android应用程序项目,让我如此不舒服。
这只是散步。 select项目属性 – > Android然后在库框中删除appcompat_v7_x并添加appcompat_v7。 现在你可以删除appcompat_v7_x。
在创build项目向导中取消选中创build活动不起作用,因为通过向导创build活动时, appcompat_v7_x再次出现。 我的ADT的版本是v22.6.2-1085508 。
如果我的英文不好,我很抱歉。
对不起,我的英文,当你创build一个新的android项目,你应该select高层次的api,例如:从api 17到api 21,它不会有appcompat,很容易共享项目。 如果您使用较低的API,则只需在Android Manifest中进行编辑,以获得较高的API :),然后可以删除Appcompat V7。
根据http://developer.android.com/guide/topics/ui/actionbar.html
ActionBar API首先在Android 3.0(API级别11)中添加, 但也可以在支持库中获得,以兼容Android 2.1(API级别7)及更高版本。
简而言之,您所看到的自动生成的项目模块化了将ActionBar添加到API 7-10的过程。
请参阅http://hmkcode.com/add-actionbar-to-android-2-3-x/以获取有关该主题的简单说明和教程。;
我注意到在使用ADT 22.6.2版本创build新的android项目时创build了'appcompat'库,即使minSDK设置为11,targetSDK设置为19
发生这种情况的原因是,在新的项目模板中,android正在使用来自支持库的一些属性。 例如,如果使用操作栏创build了一个新项目,那么在菜单的main.xml中可以find来自支持库的app:showAsAction="never"
。
- 如果应用程序针对Android版本11及以上,那么可以在菜单的main.xml中将此属性更改为
android:showAsAction
-
另外,默认主题集可以是“Theme.AppCompat.Light.DarkActionBar”,如下所示(styles.xml)
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- API 14 theme customizations can go here. --> </style>
在这种情况下,style.xml中的父主题必须更改为“android:style / Theme.Holo.Light.DarkActionBar”
- 除此之外,如果引用片段,支持库中的片段pipe理器是在MainActivity.java的代码中进行的,则必须将其适当地更改为SDK的Fragment,FragmentManager。