小编Gaë*_*tan的帖子

在工具栏上显示ActionMode

我试图使用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

85
推荐指数
6
解决办法
3万
查看次数

Gradle buildConfigField BuildConfig无法解析符号

我正在使用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.PREPRODBuildConfig.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)

android buildconfig gradle

66
推荐指数
14
解决办法
5万
查看次数

AndroidJUnit4和参数化测试

Google为Android编写测试提供了新的类,尤其是使用jUnit 4:https://developer.android.com/tools/testing-support-library/index.html

我想知道是否可以使用来自jUnit的AndroidJUnit4运行器以及参数化运行器?

junit android parameterized android-testing

17
推荐指数
1
解决办法
5512
查看次数

Android数据绑定和Kotlin

我正在将我的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 kotlin android-databinding

17
推荐指数
1
解决办法
4602
查看次数

Android AppCompat 22.1.1默认文本颜色和ActionMode样式

我正在更新我的应用程序以使用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 android-appcompat

7
推荐指数
1
解决办法
1501
查看次数

使用Gradle从多个模块创建单个AAR文件

像许多其他人一样,我试图从我的多模块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)

android gradle android-library android-gradle-plugin

6
推荐指数
0
解决办法
935
查看次数

搞乱Android的共享偏好 - 使用哪个功能?

这是一个标准任务:在应用程序的共享首选项中存储一些值,以便以后能够检索它.但是人们会发现有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)

所以现在问题是:选择哪一个,哪一个更好,或者每个人的目的是什么?

android default sharedpreferences

4
推荐指数
1
解决办法
1570
查看次数

无法识别产品风味的构建类型特定文件夹

我已将我的项目配置为具有多种产品风格。我的模块中有以下代码build.gradle

android {
    // Rest of the configuration omitted for clarity
    buildTypes {
        debug {
            // ...
        }

        release {
            // ...
        }
    }

    productFlavors {
        paid
        free
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我创建一个文件(任意文件:Java中,资源,...),在paidfreedebugrelease,它是由Android工作室的认可,我可以在我的项目中使用它。

但是,如果在paidDebug(或类似文件夹)中创建了相同的文件,则Android Studio 无法识别该文件。我需要任何额外的配置才能工作吗?这不支持(还)吗?

android gradle android-productflavors

4
推荐指数
1
解决办法
2874
查看次数

在 Gradle 中禁用 jCenter 存储库

在我的 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(或任何其他未明确定义的存储库)存储库?

android gradle jcenter

4
推荐指数
1
解决办法
5076
查看次数