小编Far*_*deh的帖子

Libpng错误:app:mergeDebugResources - Gradle Error 42

在Android Studio中编译我的应用程序以进行调试时,我收到以下错误:

Failed to run command:
C:\Users\Farbod\Android-SDK\build-tools\21.1.2\aapt.exe s -i C:\Users\Farbod\AndroidStudioProjects\MyApp\app\src\main\res\drawable-hdpi\img_myImage.png -o C:\Users\Me\AndroidStudioProjects\MyApp\app\build\intermediates\res\debug\drawable-hdpi-v4\img_myImage.png
Error Code:
42
Output:
C:\Users\Me\AndroidStudioProjects\MyApp\app\src\main\res\drawable-hdpi\img_myImage.png: libpng warning: IDAT: Too many IDATs found
libpng error: Read Error
:app:mergeDebugResrouces FAILED
Run Code Online (Sandbox Code Playgroud)

我已经检查过我的所有文件都是.png格式,我不确定是什么原因.

android libpng android-studio android-gradle-plugin

5
推荐指数
1
解决办法
5006
查看次数

不支持 Lambda 表达式 -source 1.7 (Android Studio)

我试图在 Android Studio 中运行我的 android 项目,但我不能这样做。

我收到此错误:

Error:(23, 47) error: lambda expressions are not supported in -source 1.7
(use -source 8 or higher to enable lambda expressions)
Error:Execution failed for task ':app:compileDebugJava'.
> Compilation failed; see the compiler error output for details.
Run Code Online (Sandbox Code Playgroud)

我正在使用 JDK 1.8。

知道为什么会这样吗?任何决议。

PS:Stack 中有几个类似的问题,但没有一个解决了这个问题。请在标记重复之前了解问题。

java android

5
推荐指数
2
解决办法
6525
查看次数

Android:如何调整图片大小以填充父级?

我正在开发显示图像的应用程序,我需要创建一个以1:1宽高比显示大图像的视图.

首先,我有一些72x72分辨率的缩略图.我已经把他们在ImageView,但即使我添加参数android:width="fill_parent"android:height="wrap_content",图像也不会不的大小ImageView,但只在中间居中.

我尝试添加参数android:scaleType="centerCrop",水平调整图像大小,但高度保持不变.

我怎么能设置我的ImageView所有设备在所有设备上的宽度与父视图一样,它也应该是高度.

我可以以编程方式执行此操作,但我需要能够以XML格式执行此操作.

我的XML文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    // The ImageView I am talking about above
    <ImageView
        android:id="@+id/invitation_imageview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="1dp"
        android:scaleType="centerCrop"
        android:src="@drawable/face_woman_smile" />

    <ImageView
        android:id="@+id/invitation_avatar_view_1"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:src="@drawable/face_woman_smile"
        android:scaleType="center"
        android:layout_margin="1dp" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android image android-layout android-xml scaletype

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

如何在android中的style.xml文件中设置CardView属性

我已经设置样式为我CardViewstyle.xml文件,但它给我的错误在编译时app:cardCornerRadius,app:cardElevation,应用:cardPreventCornerOverlap和app:contentPadding属性.CardView在Android中设置样式的正确方法是什么?

以下是我的一些代码:

<style name="CardViewStyle" parent="CardView">
    <item name="android:layout_marginBottom">@dimen/cardMarginVertical</item>
    <item name="android:layout_marginTop">@dimen/cardMarginVertical</item>
    <item name="android:layout_marginLeft">@dimen/cardMarginHorizontal</item>
    <item name="android:layout_marginRight">@dimen/cardMarginHorizontal</item>
    <item name="app:cardCornerRadius">2dp</item>
    <item name="app:cardElevation">2dp</item>
    <item name="app:cardPreventCornerOverlap">false</item>
    <item name="app:contentPadding">0dp</item>
    <item name="android:layout_width">match_parent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

xml android android-styles android-cardview

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

List.subList和Kotlin中的slice之间的区别

我最近意识到Kotlin中有两个非常相似的函数来获取a的一部分List,但是我不确定其中的区别:

对文件List.subList说:

返回此列表中指定的fromIndex(包括)和toIndex(不包括)之间的视图。返回列表由该列表支持,因此返回列表中的非结构更改会反映在此列表中,反之亦然。

基本列表中的结构更改使视图的行为不确定。

文档的slice说明:

返回一个列表,其中包含位于指定索引范围内的索引处的元素。

要么

返回包含指定索引处的元素的列表。

似乎关键的区别在于第一个返回列表的“ 部分视图 ”,并且是否反映了非结构性更改?但是我不太确定这意味着什么。

我查看了该slice函数的源代码:

public fun <T> List<T>.slice(indices: IntRange): List<T> {
    if (indices.isEmpty()) return listOf()
    return this.subList(indices.start, indices.endInclusive + 1).toList()
}
Run Code Online (Sandbox Code Playgroud)

但是它从subList函数返回一个列表。

有人可以解释这两个功能之间的区别,以及您何时想使用其中一个?

collections list slice kotlin

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

如何替换Google云端硬盘中的文件?

使用以下代码(取自android-quickstart),如果您拍摄多张照片,此代码可以生成多个具有相同名称的文件.如何修改以确保替换具有相同名称的文件?

public class MainActivity extends Activity implements ConnectionCallbacks,
        OnConnectionFailedListener {

    private static final String TAG = "android-drive-quickstart";
    private static final int REQUEST_CODE_CAPTURE_IMAGE = 1;
    private static final int REQUEST_CODE_CREATOR = 2;
    private static final int REQUEST_CODE_RESOLUTION = 3;

    private GoogleApiClient mGoogleApiClient;
    private Bitmap mBitmapToSave;

    /**
     * Create a new file and save it to Drive.
     */
    private void saveFileToDrive() {
        // Start by creating a new contents, and setting a callback.
        Log.i(TAG, "Creating new contents.");
        final Bitmap image …
Run Code Online (Sandbox Code Playgroud)

android google-drive-api

3
推荐指数
1
解决办法
1762
查看次数

AdMob网络报告指南

我刚开始在我的应用中使用AdMob,我对不同的条款(例如"请求","展示次数"等)以及它们在网络报告中的含义有点不确定.例如:

在此输入图像描述

虽然我已经找到了一些关于这些术语的含义的信息,但完整的指南会更有用.

terminology ads definition admob

3
推荐指数
1
解决办法
1014
查看次数

尝试在空对象引用上调用虚方法'java.lang.String android.content.Context.getPackageName()'

我有一个Activity,它本身就有三个Fragment.

在其中一个片段中,有一个RecyclerView带有自定义适配器,并且单击其中一个项目将转到另一个页面,这是相同的新实例Activity.但是,某种行为会导致我的应用程序出错.

在我的Activity中,单击其中一个项会显示同一个Activity的新实例,这很好.然后我按下后退按钮,我被带回第一个活动.但是再次单击其中一个项目(以启动相同Activity的新实例)会导致以下错误:

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.String android.content.Context.getPackageName()'

同样重要的是要考虑我在我的Activity中的一个片段中调用Activity的新实例(即三个项目的位置).所以,当我打电话给它时,我有类似的东西:

public class MyActivity extends AppCompatActivity {

    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        ViewPager viewPager = (ViewPager) findViewById(R.id.detail_viewpager);
        viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
        TabLayout tabLayout = (TabLayout) findViewById(R.id.detail_tabs);
        tabLayout.setTabTextColors(
                ContextCompat.getColor(this, R.color.text_white_secondary),
                ContextCompat.getColor(this, R.color.text_white));
        tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.white));
        tabLayout.setupWithViewPager(viewPager);
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
    }

    ...

    public class ViewPagerAdapter extends FragmentPagerAdapter {

        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return 3;
        }

        @Override
        public Fragment getItem(int position) {
            switch …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-context android-fragments

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

Android setTheme() 不改变 ActionBar 和 Status Bar

我有一个ActionBarActivity其中有导航抽屉的片段。当按下导航抽屉中的某个项目时,它会启动相应的片段。在每个片段中,该onCreate()方法如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActivity().setTheme(R.style.AppTheme);

    setHasOptionsMenu(true);
}
Run Code Online (Sandbox Code Playgroud)

然而,每个片段所应用的主题都不同。

我注意到该方法似乎没有更改我引用的 中声明的 或 状态栏setTheme()的颜色:ActionBarstyles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/brand_red_primary</item>
    <item name="colorPrimaryDark">@color/brand_red_primaryDark</item>
    <item name="android:actionBarStyle">@style/AppTheme.ActionBarStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)

同样,我的活动中的不同片段有不同的样式colorPrimary和不同的属性。colorPrimaryDark

因此,该setTheme()方法不会更改状态ActionBar栏或状态栏的颜色,但它确实会更改一些内容,例如列表视图中回拉功能的颜色。

我是否遗漏了什么,或者我需要做什么来setTheme()更改ActionBar状态栏颜色?

更新:

我尝试了此处发布的解决方案,但它给出的结果与我之前尝试过的结果完全相同(使用setTheme())。

android android-theme android-fragments navigation-drawer android-styles

2
推荐指数
1
解决办法
3499
查看次数

gradle.properties的作用是什么?(并使用外部变量)

我已经开发了一段时间的Android应用程序,但是意识到我仍然不知道该gradle.properties文件的用途。

我已经阅读了Gradle文档,其中介绍了您可以添加用于指定Java主目录或内存设置的配置。还有其他用途吗?

在这种情况下,我的主要参考通常是Google I / O开源应用程序,然后查看gradle.properties文件,我可以看到它的一种用途是存储依赖项版本变量,因此Android支持库依赖项的版本代码,例如,不需要每个都使用新版本的库进行更新,只需更新一个变量即可:

...

// Android support libraries.
compile "com.android.support:appcompat-v7:${android_support_lib_version}"
compile "com.android.support:cardview-v7:${android_support_lib_version}"
compile "com.android.support:design:${android_support_lib_version}"
compile "com.android.support:support-v13:${android_support_lib_version}"
compile "com.android.support:recyclerview-v7:${android_support_lib_version}"
compile "com.android.support:preference-v7:${android_support_lib_version}"

...
Run Code Online (Sandbox Code Playgroud)

相同的想法已用于Google Play服务。

但是,在我自己的一个Android项目中,我一直在做类似的事情-我将版本变量放在根build.gradle文件中,如下所示:

// Top-level build file where you can add configuration options
// common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.0.5-2'

    repositories {
        ...
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }

    ...
Run Code Online (Sandbox Code Playgroud)

然后,我一直在模块中使用它,build.gradle如下所示:

dependencies {

    ...

    // Kotlin standard library
    compile …
Run Code Online (Sandbox Code Playgroud)

android android-gradle-plugin gradle.properties

2
推荐指数
1
解决办法
1335
查看次数

使用带工具栏的滑动选项卡

我已经开始从使用ActionBarActivity改为AppCompatActivity,但我也开始使用它Toolbar而不是标准ActionBar.

但是,在我的一个具有滑动选项卡类型布局的活动中,以下行似乎已被弃用:

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Run Code Online (Sandbox Code Playgroud)

虽然我已经在Stack Overflow上查看了关于此问题的其他一些答案,但是有没有内置的方法来改变它以支持使用Toolbar.如果是这样,你能解释一下我将如何改变它吗?如何onTabSelected更改已弃用的方法?

另外,我注意到Google Play音乐应用看起来像是标签下方的扩展工具栏/部分(请参阅此图片了解我所说的内容).我怎么能有这种类型的布局?

提前致谢.

android android-layout android-tabs android-5.0-lollipop android-toolbar

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