小编MrH*_*rio的帖子

剪切按钮不接收触摸输入

我有一个位于两个布局之间的FAB.使用负边距android:clipChildren并且android:clipToPadding都设置为false我可以生成这个放置愉快的小按钮:

在此输入图像描述

现在,问题是FAB的下半部分没有接收到触摸输入或换句话说:不可点击.我已经尝试过android:elevation确保它尽可能保持最高的Z值,但问题仍然存在.与此同时,上半年工作正常.

在此输入图像描述

我有点坚持这个,有谁可以帮助我做什么?下面是我XML的布局,如果你需要它.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:fab="http://schemas.android.com/apk/res-auto"
    android:id="@+id/rl_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false"
    android:clipToPadding="false">

    <id.ridsatrio.taggr.widgets.ObservableScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:fab="http://schemas.android.com/apk/res-auto"
        android:id="@+id/sv_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipChildren="false"
        android:clipToPadding="false">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?android:attr/windowBackground"
            android:clipChildren="false"
            android:clipToPadding="false"
            android:focusable="true"
            android:focusableInTouchMode="true">

            <id.ridsatrio.taggr.widgets.SquaredImageView
                android:id="@+id/iv_details_header"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:adjustViewBounds="true"
                android:background="?android:attr/selectableItemBackground"
                android:clickable="true"
                android:contentDescription="Album Art Image"
                android:elevation="@dimen/elevation_none"
                android:focusable="true"
                android:scaleType="centerCrop"
                android:src="@drawable/def_album_art" />

            <View
                android:id="@+id/v_anchor"
                android:layout_width="match_parent"
                android:layout_height="@dimen/details_header_height"
                android:layout_below="@+id/iv_details_header"
                android:elevation="@dimen/elevation_low" />

            <LinearLayout
                android:id="@+id/ll_track_fields"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/v_anchor"
                android:orientation="vertical">

                ...

            </LinearLayout>

            <View
                android:id="@+id/v_divider"
                android:layout_width="match_parent"
                android:layout_height="@dimen/details_section_divider_height"
                android:layout_below="@id/ll_track_fields"
                android:layout_marginLeft="@dimen/details_section_divider_margin_start"
                android:layout_marginTop="@dimen/item_horizontal_margin_xlarge"
                android:background="@color/dividers_light" />

            <LinearLayout
                android:id="@+id/ll_album_fields" …
Run Code Online (Sandbox Code Playgroud)

xml android button android-layout

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

RecyclerView - 我应该在哪里处理其点击事件?

在引入RecyclerView(及其强制ViewHolder模式)之前,我通常将任何单击事件委托给其对应Activity/ Fragment使用setOnItemClickListener().(因为我在开发Android时主要看Activity/ Fragment作为"控制器"对象,因此应该在视图中对视图进行任何修改.)

现在,RecyclerView并没有真正以同样的方式对待它的孩子,并且setOnItemClickListener()不再为它实现那些(或类似的)方法 - 我应该在哪里处理可能发生的点击事件?我不知道......但处理它们Adapter对我来说似乎很尴尬.

我们该怎么做呢?

提前致谢!

android android-adapter android-adapterview

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

在Android中使用RegEx拆分字符串

我一直试图Strings使用RegEx 进行拆分但没有成功.我们的想法是以某种方式从文件名中拆分给定的音乐文件元数据,以便:

"01. Kodaline - Autopilot.mp3"
Run Code Online (Sandbox Code Playgroud)

..会导致..

metadata[0] = "01"
metadata[1] = "Kodaline"
metadata[2] = "Autopilot"
Run Code Online (Sandbox Code Playgroud)

这是RegEx我一直试图以其原始形式使用:

^(.*)\.(.*)\-(.*)\.(mp3|flac)
Run Code Online (Sandbox Code Playgroud)

根据我的阅读,我需要格式化RegEx String.split(String regex)才能工作.所以这是我格式化的RegEx:

^(.*)\\.(.*)\\-(.*)\\.(mp3|flac)
Run Code Online (Sandbox Code Playgroud)

..这就是我的代码:

String filename = "01. Kodaline - Autopilot.mp3";
String regex = "^(.*)\\.(.*)\\-(.*)\\.(mp3|flac)";

String[] metadata = filename.split(regex);
Run Code Online (Sandbox Code Playgroud)

但我没有收到我预期的结果.你能帮帮我吗?

java regex android

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

使用Rx去除按钮单击

我正在尝试制作一个简单的"按钮去抖动器",它将计算过滤后的点击次数并通过TextView显示它.我想以一种方式过滤快速/垃圾邮件点击,这种方式可以忽略中间时间间隔小于300毫秒的点击.

我做了我的研究,偶然发现了Rx一个很棒debounce()的理论应该做我想要的事情.

..或者我想.由于应用似乎只注册了第一次点击; 无论我多久等待,计数器都不会增加.

这是我的一段代码:

    ...

    RxView.clicks(mButton)
        .debounce(300, TimeUnit.MILLISECONDS)
        .subscribe(new Subscriber<Object>() {
            public int mCount;

            @Override
            public void onCompleted() {
            }

            @Override
            public void onError(Throwable e) {
            }

            @Override
            public void onNext(Object o) {
                mText.setText(String.valueOf(++mCount));
            }
        });

    ...
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我试图在没有debounce()它的情况下运行它并且它完美地工作(每次按下按钮时计数器都会增加).

提前致谢!

android rx-java rx-android

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

有没有理由为什么File中的某些方法使用布尔值来表示它的成功(而不仅仅是抛出异常)?

FileJava中的类包含利用布尔值来指示正在执行的操作的成功的方法.所述方法的用户需要在每次调用时检查返回值.

以下是mkdir()说明要求的文件摘要:

public boolean mkdir()

假设其父项存在,创建此文件命名的目录.如果您还想创建缺少的父项,请使用mkdirs.

请注意,此方法在失败时不会抛出IOException.呼叫者必须检查返回值.

还有一种情况createNewFile()(甚至更奇怪)使用布尔值和抛出异常来表示成功:

public boolean createNewFile()抛出IOException

根据存储在此文件中的路径信息在文件系统上创建一个新的空文件.如果创建文件,则此方法返回true;如果文件已存在,则返回false.请注意,即使文件不是文件,它也会返回false(因为它是一个目录,比方说).

...

请注意,如果文件已存在,则此方法不会抛出IOException,即使它不是常规文件也是如此.呼叫者应始终检查返回值,并可能另外想要调用isFile.

现在,这看起来很不方便,因为用户必须预测两种错误情况而不是仅使用简单的try-catch块.

这个大惊小怪的原因是什么?

java

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

从另一个DAOFactory调用一个DAO

目前,我的应用程序架构流程如下:

查看→演示者→一些异步执行器→DAOFactory→DAO(接口)→DAO(Impl)

目前,这种架构有效; 主要是因为我此刻只需要一种DAO.但随着需求的增长,我需要扩展到多个DAO,每个DAO都有自己的实现如何获取数据.

这是我的案例说明:

在此输入图像描述

主要的问题来自于FooCloudDao从API加载数据.此API需要某种身份验证方法 - 在登录期间存储的字符串标记(例如,Session对象 - 是的,它也有自己的DAO).

只是在没有连接的情况下传递一个Session实例是很诱人FooDaoFactory的,但它似乎是hackish和反直觉.我可以想象的下一件事是SessionDAOFactory从内部访问FooDaoFactory以获取a的实例Session(然后在我需要FooCloudDAO实例时传递它).

但正如我所说,我不确定我是否可以做这样的事情 - 好吧,也许我可以,但这是否真的是这样做的正确方法?

java architecture oop design-patterns

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

如何在Realm中存储枚举?

如何在使用Realm时存储Java枚举类?

从他们的文档来看,似乎Realm尚未支持存储枚举:

字段类型 Realm支持以下字段类型:boolean,byte,short,¯nt,long,float,double,String,Datebyte [].整数类型byte,short,int和long都映射到Realm中的相同类型(实际上很长).此外,支持RealmObject和RealmList的子类来建模关系.

有迹象表明,有人问了Objective-C和得到回答类似的问题在这里.但是还没有Java.

java enums realm

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

OkHttp - 获取失败的响应正文

我正在处理的应用程序的API使用JSON作为传递数据的主要方式 - 包括失败的响应方案中的错误消息(响应代码!= 2xx).

我正在迁移我的项目以使用Square的OkHttp网络库.但是我很难解析所说的错误信息.response.body().string()显然,对于OkHttp 来说,只返回请求代码"解释"(Bad Request,Forbidden等)而不是"真实"的正文内容(在我的例子中:描述错误的JSON).

如何获得真正的反应体?使用OkHttp时甚至可以这样做吗?


作为一个例子,这是我解析JSON响应的方法:

private JSONObject parseResponseOrThrow(Response response) throws IOException, ApiException {
        try {
            // In error scenarios, this would just be "Bad Request" 
            // rather than an actual JSON.
            String string = response.body().toString();

            JSONObject jsonObject = new JSONObject(response.body().toString());

            // If the response JSON has "error" in it, then this is an error message..
            if (jsonObject.has("error")) {
                String errorMessage = jsonObject.get("error_description").toString();
                throw new ApiException(errorMessage);

            // Else, this …
Run Code Online (Sandbox Code Playgroud)

java okhttp

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

使用 Dagger 注入登录会话

我正在调整我的项目以使用 DI - 特别是 Dagger。我在注入类时没有问题,但是如何“注入”运行时生成的变量?

说,我想存储用户的登录会话对象,其中包含诸如api-token、之类的数据loggedUsername。当用户成功登录时,这个对象在运行时生成,在另一个负责这样做的类中。

作为一个例子,我想要的是简单地做这样的事情:

public class FooPresenter {
    ...

    Session mSession;

    @Inject FooPresenter(Session session, ...) {
        mSession = session;
        ...
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

java android dependency-injection dagger

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

如何在Android Studio 2.0中启用字体连字?

我一直在尝试使用FiraCode在Android Studio 2.0中使用其精彩的编程连字.

在查看FiraCode的IntelliJ IDE安装指南时,它说我应该idea.properties同样在文件中启用一个标志:

editor.enable.optional.ligatures=true
Run Code Online (Sandbox Code Playgroud)

我试图在IntelliJ的指南中查找如何实现这一点.该指南指出我应该能够通过"帮助"菜单编辑相关文件:

您可以创建一个空文件idea.properties并通过选择Help |在编辑器中打开它 在主菜单上编辑自定义属性命令.

但我在我的设置中找不到它.这在Android Studio 2.0中是否可以实现?

android-studio android-studio-2.0

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