我有一个带有recyclerview的协调器布局,我想以编程方式添加.它以编程方式添加的原因是因为不同的片段会使协调器布局膨胀,可能会使用不同类型的Recyclerviews.
通常对于recyclerview,为了设置此行为,我会将其添加到xml中:
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Run Code Online (Sandbox Code Playgroud)
这很好.但是,当我以编程方式创建recyclerviews然后将它们添加到framelayout时,我完全不知道如何添加此行为:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:id="@+id/coordLayout"
android:layout_height="match_parent" android:fitsSystemWindows="true"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout android:id="@+id/app_bar"
android:fitsSystemWindows="true" android:layout_height="@dimen/app_bar_height"
android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout"
android:fitsSystemWindows="true" android:layout_width="match_parent"
android:layout_height="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:contentScrim="?attr/colorPrimary">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
android:id="@+id/frameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud) android android-layout android-fragments material-design android-recyclerview
我希望有人可以对这个问题有所了解.我正在尝试更改支持库版本:
compile 'com.android.support:support-annotations:23.1.0'
compile 'com.android.support:support-v4:23.1.0'
compile 'com.android.support:support-v13:23.1.0'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.android.support:design:23.1.0'
compile 'com.android.support:cardview-v7:23.1.0'
compile 'com.android.support:recyclerview-v7:23.1.0'
Run Code Online (Sandbox Code Playgroud)
至
compile 'com.android.support:support-annotations:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:support-v13:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:cardview-v7:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
Run Code Online (Sandbox Code Playgroud)
通常看起来像一个简单的小升级已经让我整整一天.基本上在更新gradle.build文件时,我同步 - >清理,并且在IDE上出现了一堆无法解析符号错误,用于支持库中的类.
更有趣的是,如果我尝试通过adb在我的手机上运行代码,尽管AS显示为"无法解析符号",它在我的手机上运行完全正常.
在我试过的事情中:
进一步深入到构建目录中,它们在两者中都是相似的
建立\中间体\分解-AAR\com.android.support \程序兼容性-V7\23.1.0 \罐\ classes.jar
和
建立\中间体\分解-AAR\com.android.support \程序兼容性-V7\23.1.1 \罐\ classes.jar
分别是生成的.不同的是,在AS中,对于以前的版本,"classes.jar"可以在AS中打开,与新版本一样,它们不能在AS中打开.
我觉得我已经筋疲力尽了所有可用的选项,所以如果有人能说明如何解决这个问题,我会非常感激.
我的完整gradle.build文件:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.XXX"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName …Run Code Online (Sandbox Code Playgroud) 我正在尝试更改(https://developer.android.com/samples/SlidingTabsBasic/src/com.example.android.common/view/SlidingTabLayout.html)中描述的SlidingTabLayout的选项卡背景颜色.
我设法让整个事情发挥作用.但是当我更改第183行的tabresource颜色时,例如:
textView.setBackgroundResource(R.color.white);
Run Code Online (Sandbox Code Playgroud)
选项卡的背景变为白色,但指示器根本不显示.
有人可以建议如何只是改变背景颜色,但让指标像往常一样工作吗?
谢谢.
我有一个数据集,可能会在刷新时发生变化.确定现有数据集中的哪些条目已更改是非常不可预测的.我通读了recyclerview适配器描述和我遇到的主要问题.
是否更有效地确定哪些数据视图已更改,然后对受影响的范围使用notifyItemRangeChanged,还是应该在每次更改数据视图后逐个更改它们然后再更改notifyItemChanged?
它稍微复杂一点,因为根据改变的内容,每个视图的顺序可能已经改变,那么它是为受影响的范围调用notifyItemRangeInserted,notifyItemRangeRemoved或逐个调用notifyItemMoved的参数?
这种方式或其他方式更有效率吗?
谢谢