标签: android-appcompat

RecyclerView notifyDataSetChanged滚动到顶部位置

打电话时notifyDataSetChangedRecyclerView 其滚动位置和卷轴不保留顶部,有没有解决方案,保留它的滚动位置?

android android-appcompat android-recyclerview

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

如何以编程方式更改AppCompat v21工具栏主题?

这是我的工具栏xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    app:contentInsetEnd="0dp"
    app:contentInsetStart="0dp"
    android:layout_height="@dimen/toolbar_height"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:background="@color/primary_color">



</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

我想以 编程方式更改 app:theme.我该怎么做呢?

android android-appcompat android-toolbar

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

致命异常:java.lang.NoClassDefFoundError:android.support.v7.appcompat.R $ layout

我刚从日食迁移到工作室.我跟着一个博客将项目从eclipse导出到了工作室.该应用程序在棒棒糖中运行良好,并在棒棒糖前设备中抛出以下错误.

仅在工作室中获取此错误.不是在日蚀.

FATAL EXCEPTION: main
    java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$layout
            at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:324)
            at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246)
            at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106)
            at com.hsp.inventory.SplashActivity.onCreate(SplashActivity.java:53)
            at android.app.Activity.performCreate(Activity.java:5122)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1081)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
          //
          ......
          //
Run Code Online (Sandbox Code Playgroud)

我的gradle文件

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
        mavenCentral()
        maven {
            url "http://dl.bintray.com/journeyapps/maven"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.gms:play-services:7.5.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.android.support:appcompat-v7:22.2.0' …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat gradle android-studio

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

如何在cardview上设置彩色边框

我正在实现卡片视图,但我找不到任何边框选项来设置它的边框.

这是我的card.xml:

<android.support.v7.widget.CardView android:layout_marginTop="10dp"
  android:id="@+id/cardView"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  xmlns:android="http://schemas.android.com/apk/res/android"
  card_view:cardPreventCornerOverlap="false"
  app:cardPreventCornerOverlap="false"
  xmlns:card_view="http://schemas.android.com/tools"
  xmlns:app="http://schemas.android.com/apk/res-auto">

  <RelativeLayout
     android:background="@drawable/tab_bg"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:padding="16dp">

     <TextView
         android:id="@+id/title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Title"
         android:textSize="20sp" />

  </RelativeLayout>

</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)

这是我的图像,我想在卡片视图上实现绿色边框?

在此输入图像描述

帮我.我怎么能实现这个呢?我没有线索.

谢谢.

android android-appcompat material-design

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

未找到 AndroidX ActivityResultContracts 包/未找到类

根据谷歌的这份关于启动活动以获得结果的文档

虽然底层的 startActivityForResult() 和 onActivityResult() API 在所有 API 级别的 Activity 类上都可用,但强烈建议使用 AndroidX Activity 1.2.0-alpha02 和 Fragment 1.3.0-alpha02 中引入的 Activity Result API。

我想让我的用户从我的应用程序中拍摄照片并将该照片数据返回到我的应用程序。我打算使用旧的 startActivityForResult() 但是这个新方法看起来可以解决很多问题并且更可靠,所以我想试一试。我应该能够调用registerForActivityResult()并传递一个内置的合约来拍摄一张名为ActivityResultsContracts.TakePicture的照片:

this.registerForActivityResult(new ActivityResultContracts.TakePicture(), ...);
Run Code Online (Sandbox Code Playgroud)

但我得到: error: package ActivityResultContracts does not exist

我已将此添加到我的 app/build.gradle 中:

// original include
//implementation 'androidx.appcompat:appcompat:1.1.0'

// suggestion from Google documentation
//implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'

// AndroidStudio suggested a newer version was available
implementation 'androidx.appcompat:appcompat:1.2.0-beta01'
Run Code Online (Sandbox Code Playgroud)

我尝试了alpha02beta01并且它们似乎都没有文档中提到的类。

当我尝试在我的 java 文件顶部手动导入类时,AndroidStudio 也不认为该包存在。应该是androidx.activity.result.contract.ActivityResultContracts.TakePicture,但这是我看到的:

导入语句中 Android Studio 自动完成包列表的屏幕截图

如果这很重要,我正在使用 gradle 3.5.3。(每当我尝试升级到最新的 gradle …

android android-appcompat android-gradle-plugin androidx

17
推荐指数
2
解决办法
7786
查看次数

将应用程序兼容性更新到 1.4.1 后 ProcessLifecycleOwner 无法工作

我正在调查一个奇怪的问题,我们将 更改androidx.appcompat:appcompat1.3.11.4.1突然我们的LifecycleObservers观察过程生命周期停止发出任何事件。

我也在使用"androidx.lifecycle:lifecycle-extensions:2.2.0",我知道这已经被弃用,但如果 appcompat 是,它可以完美地工作1.3.1

我已在清单中设置了正确的应用程序名称,我已根据文档的要求包含此提供程序。

        <provider
            android:name="androidx.startup.InitializationProvider"
            android:authorities="${applicationId}.androidx-startup"
            tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)

初始化的示例,不起作用。该对象被注入到Application类中,并且生命周期观察器被添加,但从onStart未被onStop调用。

class AppLifecycle @Inject constructor(
    private val foregroundProxy: AppLifecycleProxy
) : LifecycleObserver {

    init {
        ProcessLifecycleOwner.get().lifecycle.addObserver(this)
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart() {
        foregroundProxy.onStarted()
    }

    @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
    fun onStop() {
        foregroundProxy.onStopped()
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:根据 @EpicPandaForce 评论,将清单中的提供程序块更改为:

 <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities=\"${applicationId}.androidx-startup"
    android:exported="false"
    tools:node=\"merge">
    <!-- If you are using androidx.startup to initialize other components -->
    <meta-data
        android:name="androidx.lifecycle.ProcessLifecycleInitializer"
        android:value="androidx.startup" …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat application-lifecycle android-lifecycle

17
推荐指数
3
解决办法
6423
查看次数

使用AppCompat v21将色调应用于PreferenceActivity小部件

我在PreferenceActivity中使用CheckboxPreference,在v21支持库中使用AppCompat主题.正如您所知,使用这个最新的库小部件,如复选框,editTexts,单选按钮等,都会使用主题中定义的辅助颜色进行着色.在首选项屏幕中,文本是由我的主题指定的正确颜色,但复选框和edittext不是.似乎当CheckboxPreference实例创建窗口小部件时,它不会将我的主题应用于它.

正常布局中的单选按钮,有色:

截图1 http://i59.tinypic.com/2qv9stj.png

来自CheckboxPreference的复选框,没有着色:

截图2 http://i61.tinypic.com/91bcly.png

我用作父主题Theme.AppCompat.Light.NoActionBar.这种情况发生在Preference的每个子类中都有一个小部件,比如说EditTextPreference,其中EditText有一条黑色的底线,而不是有色的线.如何将色调应用于Preference子类显示的小部件?

更新:因为PreferenceActivity扩展了框架Activity,所以不应用着色.在工作案例中,我使用了支持库中的ActionBarActivity.现在的问题是:怎么了?

android tint android-appcompat android-preferences material-design

16
推荐指数
3
解决办法
7207
查看次数

不使用appcompat库时应该使用android:showAsAction

我有一个奇怪的问题,我在我的Android应用程序中使用menu.xml文件,如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:compat="http://schemas.android.com/apk/res-auto" >

    <item
        android:id="@+id/action_refresh"
        android:orderInCategory="100"
        android:title="@string/action_refresh"
        android:icon="@drawable/toc"
        compat:showAsAction="always"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是几天前我正在将我的eclipse更新到最后一个版本,之后,app:showAsAction ="always"显示错误:

不使用appcompat库时应该使用android:showAsAction,之后我的操作栏图标被移动到溢出栏而根本没有显示在操作栏中.

无论如何,appcompat库是我的基本样式的父级.我该怎么做才能解决这个问题?

eclipse android android-appcompat android-actionbar

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

ActionBar中动画ActionBarDrawerToggle的颜色

如何使用AppCompat-v7(v21)更改ActionBar中动画ActionBarDrawerToggle图标的颜色?我尝试过这个,但是没有用.谢谢.

myActionBarActivity.java

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mLeftDrawer = (LinearLayout) findViewById(R.id.left_drawer);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
            R.string.drawer_open, R.string.drawer_close)
Run Code Online (Sandbox Code Playgroud)

价值观/ styles.xml

    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
Run Code Online (Sandbox Code Playgroud)
    <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
        <item name="spinBars">true</item>
        <item name="color">@android:color/black</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

更新:解决了,<item name="actionBarWidgetTheme">我的主题中有这个条目可能重叠 <item name="drawerArrowStyle">.我删除了它,现在一切正常.

android-appcompat android-5.0-lollipop

16
推荐指数
3
解决办法
7129
查看次数

测试RxBinding RxSearchView

背景

public Observable<List<Foo>> search(SearchView searchView) {

    return RxSearchView.queryTextChanges(searchView)
            .filter(charSequence -> !TextUtils.isEmpty(charSequence))
            .throttleLast(100, TimeUnit.MILLISECONDS)
            .debounce(200, TimeUnit.MILLISECONDS)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(AndroidSchedulers.mainThread())
            .flatMap(this::performSearch) //Search the DB
            .onErrorResumeNext(this::doSomething);
}
Run Code Online (Sandbox Code Playgroud)

我试图用AndroidJUnit4跑步者测试上面的方法Mocktio.

@Test
public void testSearchCallsDataManager_WhenCalled() {

    String input = "abc";

    when(mockSearchView.getQuery()).thenReturn(input);

    searchRequestManager.search(mockSearchView).subscribe(testSubscriber); //Using standard TestSubscriber

    testSubscriber.assertNoErrors();
    testSubscriber.assertNotCompleted();
    verify(mockDataManager).getFoos(input);
}
Run Code Online (Sandbox Code Playgroud)

问题

我尝试过使用a mockSearchView和real SearchView.

mockSearchView = mock(SearchView.class);
searchView = new SearchView(InstrumentationRegistry.getContext(), null);
searchView = new SearchView(InstrumentationRegistry.getTargetContext(), null);
Run Code Online (Sandbox Code Playgroud)

在实例化期间,实际对象在测试运行时会导致不同的异常.模拟对象在执行期间似乎没有任何效果.

更新

为清楚起见:理想情况下,如果我可以模拟SearchView,那将是很好的,因为我想测试发生什么后发生的事情以及使用正确的输入调用performSearch方法.

android android-appcompat searchview rx-java rx-android

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