我试图使用android.view.ActionMode
新的android.support.v7.widget.Toolbar
,除了传统的android.app.ActionBar
.我可以用以下方式显示它:
toolbar.startActionMode(callback);
Run Code Online (Sandbox Code Playgroud)
问题是,ActionMode
显示在ActionBar
,而不是在Toolbar
.有办法改变吗?
我试图在我的主题中设置以下内容,但它似乎没有改变任何东西:
<item name="windowActionModeOverlay">true</item>
Run Code Online (Sandbox Code Playgroud) android android-support-library android-actionmode android-toolbar
我正在使用Gradle来构建我的Android应用程序.我试图使用基于构建类型(发布或调试)的一些标志.
我的Gradle文件如下所示:
android {
buildTypes {
debug {
buildConfigField 'boolean', 'PREPROD', 'true'
buildConfigField 'boolean', 'STAGING', 'false'
}
release {
buildConfigField 'boolean', 'PREPROD', 'false'
buildConfigField 'boolean', 'STAGING', 'false'
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我试图打电话BuildConfig.PREPROD
或BuildConfig.STAGING
我得到一个"无法解决符号"错误.Gradle同步成功,所以我不知道是否忘记了一些步骤才能使用此功能?
生成的BuildConfig.java
文件如下(in build/source/buildConfig/debug/com.example.myapp
):
package com.example.myapp;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String PACKAGE_NAME = "com.example.myapp";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE …
Run Code Online (Sandbox Code Playgroud) Google为Android编写测试提供了新的类,尤其是使用jUnit 4:https://developer.android.com/tools/testing-support-library/index.html
我想知道是否可以使用来自jUnit的AndroidJUnit4运行器以及参数化运行器?
我正在将我的Android应用程序从Java转换为Kotlin.它正常工作,除非我尝试转换使用Android数据绑定库的文件.在这种情况下,Android Studio会在编译时抱怨未解析的引用:
Error:(10, 44) Unresolved reference: AdapterHistoriesListBinding
Run Code Online (Sandbox Code Playgroud)
AdapterHistoriesListBinding
应该由数据绑定库生成的文件的名称在哪里.它在Java中正常工作,所以我猜这是Kotlin的一个问题.
我使用的是Android Studio 2.0.0-beta6,Android Gradle Plugin 2.0.0-beta6和Kotlin 1.0.有没有什么可以使数据绑定库与Kotlin一起工作?
我正在更新我的应用程序以使用Android支持库的22.1.1版.我的应用程序主题继承自Theme.AppCompat.Light.DarkActionBar
.
它工作正常,但如果TextView
样式设置为预定义样式之一,则所有文本都是白色的.所以我最终在浅色背景上显示白色文本(默认背景颜色).在22.0.0版本中,我没有任何问题.
我在我的主题中尝试了以下内容,但它似乎不起作用:
<item name="android:textColor">@color/black</item>
<item name="android:textColorPrimary">@color/black</item>
<item name="android:textColorPrimaryInverse">@color/black</item>
Run Code Online (Sandbox Code Playgroud)
此外,ActionMode
现在有一个黑色背景而不是白色,因为它曾经是22.0.0.
关于如何改变这个的任何想法?
像许多其他人一样,我试图从我的多模块Android项目生成一个AAR文件.
根据这篇文章,由于各种限制(res和依赖关系管理,清单合并,......),Android团队目前不支持它.
我想提出适合我需求的自己的解决方案.我知道我没有重复的资源,外部依赖项(如支持库)是由使用我的lib的人提供的.
我的结构类似于:
/root
|- lib1
|- lib2
|- lib3
Run Code Online (Sandbox Code Playgroud)
为了实现我的目标,我创建了另一个名为的库模块,distribute
它将包含所有其他模块.然后我可以共享生成的distribute.aar
文件.
/root
|- lib1
|- lib2
|- lib3
|- distribute
Run Code Online (Sandbox Code Playgroud)
这是模块的build.gradle
文件distribute
:
apply from: '../common.gradle' // This simply configure properties shared accross all modules
apply plugin: 'com.android.library'
def allModules = rootProject.allprojects.collect { it.name } - [rootProject.name, name]
def whiteLabelDependencies = [
whiteLabel1: allModules - ['lib2'],
whiteLabel2: allModules,
]
android {
def buildTypeNames = buildTypes.collect { it.name }
def whiteLabelTypes = …
Run Code Online (Sandbox Code Playgroud) 这是一个标准任务:在应用程序的共享首选项中存储一些值,以便以后能够检索它.但是人们会发现有3个函数可以在那里存储一个值:
//1.
public static SharedPreferences PreferenceManager.getDefaultSharedPreferences(Context context) {}
//2.
public SharedPreferences Activity.getPreferences(int mode) {}
//3.
public SharedPreferences ContextWrapper.getSharedPreferences(String name, int mode) {}
Run Code Online (Sandbox Code Playgroud)
所以现在问题是:选择哪一个,哪一个更好,或者每个人的目的是什么?
我已将我的项目配置为具有多种产品风格。我的模块中有以下代码build.gradle
:
android {
// Rest of the configuration omitted for clarity
buildTypes {
debug {
// ...
}
release {
// ...
}
}
productFlavors {
paid
free
}
}
Run Code Online (Sandbox Code Playgroud)
如果我创建一个文件(任意文件:Java中,资源,...),在paid
,free
,debug
或release
,它是由Android工作室的认可,我可以在我的项目中使用它。
但是,如果在paidDebug
(或类似文件夹)中创建了相同的文件,则Android Studio 无法识别该文件。我需要任何额外的配置才能工作吗?这不支持(还)吗?
在我的 Gradle 项目中,我使用自定义 Maven 存储库来下载我需要的依赖项:
buildscript {
repositories {
maven {
url 'https://maven.my-company.com/'
}
}
}
allprojects {
repositories {
maven {
url 'https://maven.my-company.com/'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到在我们的 Jenkins 上,每个构建比在我的计算机上需要多几分钟才能完成。在调试标志 ( ) 的帮助下./gradlew --debug --refresh-dependencies clean :app:assembleDebug | grep jcenter
,我注意到每个依赖项都会在 jCenter 中查找,即使我将其从repositories
块中删除了:
[DEBUG] [org.gradle.internal.resource.transfer.DefaultCacheAwareExternalResourceAccessor] Constructing external resource: https://jcenter.bintray.com/com/google/firebase/firebase-iid/maven-metadata.xml
Run Code Online (Sandbox Code Playgroud)
由于我们的 Jenkins 无法访问外部网络,这些请求会超时并增加总体构建时间。有什么办法可以完全禁用 Gradle 中的 jCenter(或任何其他未明确定义的存储库)存储库?