小编Jon*_*Jon的帖子

如何使用黑色图标使状态栏变为白色?

我想更改我的应用程序的状态栏的颜色,使其为黑色图标的白色(而不是带有白色图标的默认黑色).有没有办法做到这一点?

android themes

60
推荐指数
5
解决办法
4万
查看次数

Android:要为代码值选择什么?

像这样的方法ActivityCompat.requestPermissions要求我传递一个请求代码,以后我可以在回调中测试它(在这种情况下onRequestPermissionsResult).我应该在请求代码中传递一些最佳实践价值吗?我注意到如果我只输入一个随机的,int我有时会得到这样的错误:

java.lang.IllegalArgumentException: Can only use lower 8 bits for requestCode



10-25 16:47:43.652 8315-8315/? E/AndroidRuntime: FATAL EXCEPTION: main
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime: Process: my package, PID: 8315
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{mypackage.myactivity}: java.lang.IllegalArgumentException: Can only use lower 8 bits for requestCode
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at android.app.ActivityThread.-wrap11(ActivityThread.java)
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
10-25 16:47:43.652 8315-8315/? E/AndroidRuntime:     at …
Run Code Online (Sandbox Code Playgroud)

java user-interface android android-permissions android-6.0-marshmallow

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

Android Studio Lint检查不必要的模块依赖性

当我对项目中的文件运行Lint检查时,我经常遇到一个看起来像这样的错误(编辑文件的实际名称,但你会得到这个想法):

当'file'filepath_to_the_class_being_analyzed'的补充范围也不包含对模块'some_3rd_party_library'的引用时,可能会删除模块'some_3rd_party_library'上模块'name_of_my_project'的依赖关系.

我为每个没有使用Gradle编译的库得到了这个错误 - 即已经整个导入项目然后作为依赖项添加的库.

Facebook是一个很好的图书馆的例子,即使你想通过Gradle你编译它也不能,因为他们不支持它,你需要将它作为本地库运行 - 看起来你会收到这个"不必要的模块依赖"对每个不直接调用Facebook的类的警告.

所以,问题是 - 处理这个错误的"正确"方法是什么?我是否会忽略它,或者我是否应该以某种方式更改代码以使其消失?

编辑:在Lint的首选项菜单中,它描述了如下检查(如果这有助于弄清楚):

此检查列出了包含其他模块的冗余依赖性的模块.可以安全地删除这些依赖项.

dependencies lint module intellij-idea android-studio

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

Android - 使用picasso加载图像而不将其存储在缓存中

我想使用picasso将图像从url加载到占位符中,但不将该图像存储在缓存中 - 换句话说,我希望将图像从网络直接下载到磁盘,然后在需要时从磁盘加载.我知道有一个名为RequestCreator的类,你可以在其中指定内存策略 - 有没有人有一个使用picasso/requestcreator做这样的事情的例子?

所以...类似于:

RequestCreator requestCreator = new RequestCreator();
requestCreator.memoryPolicy(MemoryPolicy.NO_CACHE);
....
Run Code Online (Sandbox Code Playgroud)

合并:

Picasso.with(context).load(someurl).fit().placeholder(someplaceholder).into(sometarget)..
Run Code Online (Sandbox Code Playgroud)

android picasso

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

Android:加快活动之间的共享元素转换

我在两个活动之间有一个共享元素转换,它按以下方式工作:

Intent someintent = new Intent(this, someclass.class);

        if (Build.VERSION.SDK_INT >= 21) {

            ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this
                    , new Pair<>(viewClicked.findViewById(R.id.someimage), "someimage")
                    , new Pair<>(viewClicked.findViewById(R.id.someicon), "someicon")
            );
            startActivity(someintent, options.toBundle());
        }
        else {
            startActivity(someintent);
        }
Run Code Online (Sandbox Code Playgroud)

这种方法很好,但转变的速度非常缓慢.首次点击图像时,它似乎会在转换发生之前停顿一两秒钟.这是由于正在加载的活动的"权重"还是可配置的延迟?

java user-interface android transition

16
推荐指数
2
解决办法
7003
查看次数

Android:多个intentservices或一个具有多个意图的intentservice?

我对intentService有点困惑.文档说如果你发送一个intentService多个任务(意图),那么它将在一个单独的线程上一个接一个地执行它们.我的问题是 - 是否可以同时拥有多个intentService线程?如何区分在同一个intentService(同一个线程)上创建三个不同意图的代码,或三个单独的intentServices,每个都有自己的线程和一个意图执行?

换句话说,当您执行命令startService(intent)时,您是将意图放在单个队列中还是每次都启动一个新队列?

Intent someIntent1 = new Intent(this, myIntentService.class);
Intent someIntent2 = new Intent(this, myIntentService.class);
Intent someIntent3 = new Intent(this, myIntentService.class);
startService(someIntent1);
startService(someIntent2);
startService(someIntent3);
Run Code Online (Sandbox Code Playgroud)

multithreading android worker-thread android-service android-intentservice

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

Android:CollapsingToolbarLayout以扩展文本为中心,但不折叠文本

我有一个CollapsingToolbarLayout被定义为在折叠和扩展模式中居中:

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="286dp">

<android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsingToolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:collapsedTitleGravity="center"
        app:expandedTitleGravity="center"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

                <ImageView
                android:id="@+id/backgroundImage"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:contentDescription="@null"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"/>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"/>

            <ImageView
                android:id="@+id/someIcon"
                android:layout_width="56dp"
                android:layout_height="wrap_content"
                android:src="@drawable/some_icon"
                android:padding="16dp"
                android:layout_gravity="top|end"
                app:layout_collapseMode="pin"/>
 </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

我为工具栏定义了一个标题,但当我折叠它时,我可以看到标题在对角线方向上移动而不是直线向上,并且它略微与工具栏中心的右侧对齐.请注意,宽度是match_parent,折叠的重力是中心,所以为什么会发生这种情况,我该如何解决?

第一个截图:如果我使用折叠 - >中心和展开 - >中心重力然后折叠布局,它看起来是什么样的.请注意,它位于屏幕中心的右侧.

with_collapsed_center

第二个截图:如果我摆脱崩溃的样子 - >中心引力但是保持扩展 - >中心引力然后折叠布局.请注意,它默认为左对齐.

without_collapsed_center

第三个屏幕截图:它看起来像是扩展的

扩大

到目前为止我已经尝试过解决这个问题的事情(没有成功):

•摆脱collapsedGravity并只留下expandFravity

•使用标题的默认roboto字体

•为工具栏和折叠布局设置填充和边距为0

•设置gravity center_horizo​​ntal而不是center

编辑:

我发现这个工作正常的唯一解决方法是使用单独的textview来保存标题,而不是设置collapsingtoolbarlayout的标题(这使标题正确地折叠到中心).这不是最佳的,所以我很高兴知道CPL中是否有错误,或者是否有办法使用默认标题来做同样的事情.

android android-layout android-collapsingtoolbarlayout

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

Android:GoogleAuthUtil.getToken - 应该来自哪个帐户对象?

GoogleAuthUtil.getToken要求它的第二个参数是帐户对象,但是当您使用Google SignIn连接时,结果中的结果是GoogleSignInAccount - 这不是一回事.有没有办法将GoogleSignInAccount转换为Account对象?

 private void handleSignInResult(GoogleSignInResult result) {

        if (result.isSuccess()) {

            googleSignInAccount = result.getSignInAccount();

        }
    }
Run Code Online (Sandbox Code Playgroud)

然后:

authToken = GoogleAuthUtil.getToken(context, [need an account here], scope);
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过显示accountpicker来获取电子邮件地址,我也可以从google登录结果中获取电子邮件地址 - 但我看不到获取整个帐户对象的方法.

android google-authentication google-signin googlesigninaccount oauth2

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

Android:TextInputLayout不会使提示居中

我已经从支持库textinputlayout内封闭一个EditText,我发现它不可能使提示出现在场地中央.我试着在其他计算器的讨论中发现的所有惯用的招数,你可以从代码示例中看到的,但仍暗示对的EditText左侧固执地出现.我怎么解决这个问题?

请不要建议使用paddingLeft或paddingStart做到这一点 - 我想那将在不同设备上干净工作,所以它必须是直的解决方案,而不是一个解决方法的东西.

需要明确的是:如果我删除textinputlayout,则提示正确居中.这是造成问题的textinputlayout.

<android.support.design.widget.TextInputLayout
        android:id="@+id/someId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginStart="30dp"
        android:layout_marginRight="30dp"
        android:layout_marginEnd="30dp"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:ellipsize="start"
        android:maxLines="1"
        android:inputType="textPersonName"
        >

    <EditText
        android:id="@+id/someId"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:hint="@string/somehint"
        android:textColorHint="@color/somecolor"
        android:textSize="20sp"
        android:textColor="@android:color/black"
        android:background="@android:color/white"
        android:cursorVisible="true"
        android:textCursorDrawable="@null"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:inputType="textPersonName"
        android:maxLines="1"
        android:ellipsize="start"
        />

</android.support.design.widget.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

使用最新版本的支持库:

    compile 'com.android.support:design:22.2.1'
Run Code Online (Sandbox Code Playgroud)

编辑 - 我试图解决的问题:

1)用android.support.v7.widget.AppCompatEditText替换Edittext - 不起作用

2)在textinputlayout中使用app:hintTextAppearance ="@ style/TextAppearance.AppCompat" - 不起作用

3)不是在edittext中定义提示,而是使用活动内部的textinputlayout.sethint以编程方式设置提示 - 不起作用:提示出现在左侧.

4)在onActivityCreated中设置edittext上的提示.这似乎最初起作用,但我发现尽管提示出现在中心,但inputtextlayout的功能会被破坏,并且单击edittext不再执行提示动画.

java user-interface android android-edittext

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

Android:为abc_ic_ab_back_material获取Resources $ NotFoundException

我在旧的(pre-L)设备上获得了一个Resources $ notfoundexception.我在下面包含完整的堆栈跟踪.

我的支持库版本是最新版本(24.1.0),我在gradle文件中包含了以下内容:

vectorDrawables.useSupportLibrary = true
Run Code Online (Sandbox Code Playgroud)

我的基本主题是noactionbar主题 - "Theme.AppCompat.Light.NoActionBar"

崩溃发生在我的代码中的这一行,我在支持工具栏中引用后退箭头,以便稍后更改它的颜色:

@SuppressLint("PrivateResource") final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_material);
Run Code Online (Sandbox Code Playgroud)

可能是什么原因造成的?此代码适用于L或以上的所有用户.

07-19 22:36:57.029 9330-9330/mypkg E/AndroidRuntime: FATAL EXCEPTION: main
 java.lang.RuntimeException: Unable to resume activity {mypkg/mypkg.activites.myActivity}: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020013
     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2619)
     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2647)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
     at android.app.ActivityThread.access$600(ActivityThread.java:138)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1205)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:137)
     at android.app.ActivityThread.main(ActivityThread.java:4929)
     at java.lang.reflect.Method.invokeNative(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:511)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565)
     at dalvik.system.NativeStart.main(Native Method)
  Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_ic_ab_back_material.xml from drawable resource ID #0x7f020013
     at android.content.res.Resources.loadDrawable(Resources.java:1957) …
Run Code Online (Sandbox Code Playgroud)

android android-resources android-support-library android-toolbar android-vectordrawable

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