小编MHo*_*gge的帖子

无法加载广告:3

我正在使用DoubleClick为我的Android应用设置广告,无法显示最终广告,有人可以帮助我吗?

当我通过添加".addTestDevice("xxx ...")测试广告时,"我收到了测试广告但是当我删除此行时,我收到以下错误:

W /广告:广告服务器无法填充

广告:无法加载广告:3

我像这样设置广告:

PublisherAdRequest adRequest = new PublisherAdRequest.Builder().build();
mPublisherAdView.loadAd(adRequest);
Run Code Online (Sandbox Code Playgroud)

我的publisherView看起来像这样:

    <com.google.android.gms.ads.doubleclick.PublisherAdView
        android:id="@+id/pronostics_ad"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_gravity="center"

        ads:adSize="BANNER"
        ads:adUnitId="@string/ad_unit_pronostic">
    </com.google.android.gms.ads.doubleclick.PublisherAdView>
Run Code Online (Sandbox Code Playgroud)

可能有什么不对?

提前感谢你的答案.

android double-click-advertising

81
推荐指数
7
解决办法
9万
查看次数

禁用TabLayout

我正在使用设计库提供的新类:TabLayout.我想在特定的情况下,我正在使用的那个不能再改变标签了.

我设法禁用其viewpager上的滑动,但我无法弄清楚如何通过单击选项卡禁用页面更改.

提前致谢.

android disabled-control android-tablayout

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

无法解析变量'$ {project.groupId}'

我将项目迁移到AndroidX,在构建项目时遇到了这些错误:

[TAG] Failed to resolve variable '${project.groupId}'   
[TAG] Failed to resolve variable '${project.version}'   
[TAG] Failed to resolve variable '${project.groupId}'   
[TAG] Failed to resolve variable '${project.version}'   
[TAG] Failed to resolve variable '${project.groupId}'   
[TAG] Failed to resolve variable '${project.version}'   
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种可能的解决方

  • 清洁项目
  • 使缓存无效并重新启动
  • 设为enableJetifierfalse
  • 添加--refresh-dependencies编译器设置选项

这是我的项目gradle文件:

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        google()
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        classpath 'com.google.gms:google-services:4.0.0'
        classpath 'io.fabric.tools:gradle:1.25.4'
    }
}

allprojects { …
Run Code Online (Sandbox Code Playgroud)

android dagger android-gradle-plugin androidx

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

Android数据绑定:RecyclerView适配器的可观察列表

他们是通过使用ObservableList新的数据绑定库和MVVM模式中"notifyItem(s)..."Adapter类来避免使用类中的方法吗?

或者如果不是什么可能是最简单的方法绑定ObservableListRecyclerView

谢谢你的任何线索!

data-binding android mvvm android-adapter android-recyclerview

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

出错时不要更改TextInputLayout后台

我想将一个带有背景的EditText作为"普通"EditText,但是对TextInputEditText进行错误处理(错误消息显示在底部,而不是"!"drawable出现).

我有这样的事情:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:setError="@{viewModel.error}">

    <android.support.design.widget.TextInputEditText

        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:background="@drawable/simple_edit_text_background"
        android:ellipsize="end"
        android:inputType="textMultiLine|textNoSuggestions"
        android:text="@={viewModel.value}"

        style="@style/MyEditTextStyle" />

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

但似乎当我在TextInputLayout上设置错误时,它将背景drawable(在普通的TextInputEditText中,下划线)更改为错误TextView的颜色.

这就是我的EditText的样子: 在此输入图像描述

我们可以在以下方法中的TextInputLayout代码中看到它:

private void updateEditTextBackground() {
    if (mEditText == null) {
        return;
    }

    Drawable editTextBackground = mEditText.getBackground();
    if (editTextBackground == null) {
        return;
    }

    ensureBackgroundDrawableStateWorkaround();

    if (android.support.v7.widget.DrawableUtils.canSafelyMutateDrawable(editTextBackground)) {
        editTextBackground = editTextBackground.mutate();
    }

    if (mErrorShown && mErrorView != null) {
        // Set a color filter of the error color
        editTextBackground.setColorFilter(
                AppCompatDrawableManager.getPorterDuffColorFilter(
                        mErrorView.getCurrentTextColor(), PorterDuff.Mode.SRC_IN));
    } else if (mCounterOverflowed && mCounterView != null) {
        // Set …
Run Code Online (Sandbox Code Playgroud)

android android-textinputlayout

13
推荐指数
2
解决办法
7641
查看次数

它们是Android Studio的"区域式"折叠功能

我正在开发Android Studio和其他IDE,Android Studio有一个功能,可以在Java代码中创建可以折叠的"区域".(见下文)

有了这种代码

//region INITIALIZATION
private int myVaribale;
private String otherVariblae;
//endregion
Run Code Online (Sandbox Code Playgroud)

我们可以折叠/展开代码(见下面的截图).

展开的代码

折叠代码

它们与XML编辑器(特别是Android Studio中的编辑器)类似吗?

我们可以添加的东西,例如:

<!-- region MY LAYOUTS -->
<RelativeLayout>

   //Some layouts

</RelativeLayout>
<!-- endregion -->
Run Code Online (Sandbox Code Playgroud)

xml folding android-studio

12
推荐指数
3
解决办法
2878
查看次数

GridLayoutManager - 列宽包装自己最大的子节点

我有一个RecyclerView内部HorizontalScrollView,我希望它使用一个GridLayoutManager.这没关系,但有一件事还是困扰我,每列的宽度是相同的(根据我想的最大单元格宽度?).是否可以包装列的宽度以匹配此特定列的最大单元格?

它应该看起来像这样:

在此输入图像描述

橙色部分是细胞视图所占据的部分.


编辑

我们让我澄清我的期望.一个例子比单词更好,在这里你可以看到一个带有GridLayoutManager的RecyclerView的截图.每个项目都是一个简单的TextView,随机包含10到40个字符之间的文本.如前所述,RecyclerView位于Horizo​​ntalScrollView内.我们可以看到每个列都具有相同的宽度,尽管此列中的任何项都不能满足整个宽度.我想要的是删除那些无用的空白空间和具有不同大小的列,每列与其自己的最大子项的宽度匹配.

在此输入图像描述

如果你想测试这个行为,你可以克隆我在Github上传的这个repo:https://github.com/ShargotthDev/TestGrid

如上所述,这是我的XML布局(非常基本):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <HorizontalScrollView
        android:id="@+id/gameplay_hotizontalScroll_ScrollView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="70dp">

        <android.support.v7.widget.RecyclerView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:id="@+id/recycler_view" />

    </HorizontalScrollView>

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

编辑2

我应该提到一些单元格的跨度大小可能超过1,而LayoutManager应该是垂直的,这样那些单元格可以在水平而不是垂直方向上占据更多位置(不知道我是否让自己理解).

谢谢你的时间 !

android gridlayoutmanager android-recyclerview android-wrap-content

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

Android数据绑定:无法找到属性的setter

不知道它是如何工作的但是根据这篇文章,可以通过使用不同的命名空间来绑定特定的监听器.

我想用searchview做同样的事情并将QueryTextListener绑定到它但是我收到以下错误:

Cannot find the setter for attribute 'bind:setOnQueryTextListener' 
with parameter type android.widget.SearchView.OnQueryTextListener. 
Run Code Online (Sandbox Code Playgroud)

我在ViewModel中做了什么:

public class MembersFragmentViewModel extends BaseObservable {

    private Context context;
    private MembersAdapter adapter;
    private RecyclerView recyclerView;

    public MembersFragmentViewModel(Context context, MembersAdapter adapter, RecyclerView recyclerView) {
        this.context = context;
        this.adapter = adapter;
        this.recyclerView = recyclerView;
    }

    public SearchView.OnQueryTextListener getQueryTextListener(){
        return new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return false;
            }

            @Override
            public boolean onQueryTextChange(String query) {
                List<Contact> filteredModelList = filter(adapter.getContacts(), query);
                adapter.animateTo(filteredModelList);
                if(recyclerView != null) …
Run Code Online (Sandbox Code Playgroud)

data-binding android

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

使用RxJava/RxAndroid迭代列表

我是RxJava/RxAndroid的新手但是我的用例很困难.

我尝试迭代a List<A>将每个A转换为B异步(因为它需要调用数据库),我Observer应该在每次成功转换(in onNext())时通知我在主线程上做一些工作.

我成功地设法转换整个列表,然后收到我的List<B>,onNext()但我需要收到每个项目的通知,而不是所有项目完成后.

我试图与运营商的东西from,但如果我用from(List<A>)我的Observer必须是同一类型(receivied对象A,而不是B).

以下是我的代码如何将整个转换List<A>list<B>我应该在这里更改的内容?

private List<A> listOfA;

private startConversion() {
    Observer observer = new Observer<List<B>>() {
        @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {
            e.printStackTrace();
        }

        @Override
        public void onNext(List<B> convertedItems) {
            onConversionCompleted(convertedItems);
        }
    };

    Observable<B> observervable = Observable.fromCallable(new Callable<List<B>>() {
        @Override
        public List<B> call() throws Exception …
Run Code Online (Sandbox Code Playgroud)

rx-java rx-android

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

使用Android构建动态表单的解决方案

我实际上正在开发一个Android应用程序,我应该根据JSON文档中包含的元数据显示动态表单.基本上它的工作方式(没有细节)是JSON文档代表一个表单的结构:

{
    "fields": [
        {
            "name": "fieldA",
            "type": "STRING",
            "minCharacters": 10,
            "maxCharacters": 100
        },
        {
            "name": "fieldB",
            "type": "INTEGER",
            "min": 10,
            "max": 100
        },
        {
            "name": "fieldC",
            "type": "BOOLEAN_CHECKBOX",
            "defaultValue": true
        }
        ...
    ],
    "name": "Form A"
}
Run Code Online (Sandbox Code Playgroud)

当应用程序收到其中一个JSON文档时,我实际上正在做的是它遍历每个字段并将其解析到适当的视图(EditText,Checkbox,自定义视图等),向视图添加标记(将是能够轻松检索它并将视图添加到LinearLayout.这是一个伪代码,它实际上是如何工作的:

//Add form title
linearLayout.addView(new TextView(form.name));
//Add form fields
for(Field field: form.fields) {
    View view;
    switch(field.type){
        case STRING: view = new EditText();
        ...
    }
    view.setTag(field.id);
    linearLayout.addView(view);
}
Run Code Online (Sandbox Code Playgroud)

这个问题是,对于大型表单(如> 20个字段),它需要充斥大量视图,并且UI线程会受到很大影响.另一点需要考虑的是,单个屏幕可能有多种形式(一个接一个地垂直排序).

为了避免重载UI线程我想到了2个可能的解决方案:

  1. 使用RecyclerView.
  2. 通过Facebook使用Litho.

但在考虑这两个解决方案时,我会遇到多个问题:

  1. 使用Litho是一个很好的用例吗?或者使用RecyclerView就足够了?
  2. 我的观点如何?如果我使用回收模式,我是否能够保持每个字段的状态(甚至是屏幕外的那些字段),从而能够在不丢失数据的情况下保存表单?
  3. 如果我使用回收模式显示一个表单,我将如何处理多个表单?我们可以嵌套RecyclerView吗?表格需要像在垂直房车内一个接一个地显示,但如果表格本身是房车,我应该如何处理? …

forms android android-recyclerview litho

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