以前,我使用以下旧的支持库"23.1.1".
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:preference-v7:23.1.1'
compile 'com.android.support:preference-v14:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
Run Code Online (Sandbox Code Playgroud)
它工作得很好.这就是我的RecyclerView样子
现在,由于修复了一些错误,我希望迁移到"23.2.1".
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:preference-v7:23.2.1'
compile 'com.android.support:preference-v14:23.2.1'
compile 'com.android.support:design:23.2.1'
compile 'com.android.support:recyclerview-v7:23.2.1'
Run Code Online (Sandbox Code Playgroud)
然而,突然之间,我所有的RecyclerView物品,似乎都填满了RecyclerView整个高度.
这是我的布局文件的代码片段:https://gist.github.com/yccheok/241a0d38d56305a1be24d09b54eb1600
让我感到困惑的是,尽管我"wrap_content"在我的回收站视图项目布局中使用它,但它并没有按预期工作.
我没有使用任何自定义布局管理器RecyclerView.
从http://developer.android.com/tools/support-library/index.html,我意识到23.2.1在RecyclerView这个时候做了很多改变.
RecyclerView在计算布局或滚动时减少了不允许适配器更改的锁定时间.(问题202046)notifyItemChanged()不在视图中的项目时发生崩溃的问题.(问题202136)RecyclerView.LayoutManager在同一测量过程中添加和删除视图时发生的崩溃.(问题193958)我最怀疑的是https://code.google.com/p/android/issues/detail?id=201856,因为它涉及更改各种测量规范方法
到目前为止,我尝试使用一个简单的RecyclerView项目重现问题,使用23.2.1但是失败了!它没有"项目填满RecyclerView整个高度"的问题.我的猜测是,我的简单项目不能模拟生产项目的复杂布局结构.我的制作项目有以下布局
<Activity>
<Fragment>
<View Pager>
<Fragment>
<RecyclerView />
</Fragment>
</View Pager>
</Fragment>
</Activity>
Run Code Online (Sandbox Code Playgroud)
经过几个小时的调试,我还是找不到这个问题的根本原因,有什么提示吗? …
android android-support-library android-recyclerview android-support-design
我正在玩新的CardView,但边缘似乎没有应用.
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:layout_marginLeft="18dp"
android:layout_marginRight="18dp"
card_view:cardCornerRadius="4dp"
card_view:cardBackgroundColor="#FFA"
card_view:layout_margind="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/info_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"/>
</LinearLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我在ViewPager中的片段中使用它.该卡扩展了屏幕的整个宽度(match_parent),即使我在CardView上使用android:layout_marginLeft ="18dp"和android:layout_marginRight ="18dp".
我有什么想法可能做错了吗?
如何监控进度变化ExoPlayer?
我试图实现隐藏MediaController和重写的setOnSeekBarChangeListener方法,但现在没有成功.我想知道是否有另一种方式来倾听ExoPlayer进展.
我正试图在我的时间里随着时间改变这个领域RecyclerView.每个人都ViewHolder包含一个CardView和更多的内部视图.我想要制作动画的唯一视图是有时间的视图.如您所见,没有动画:
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
逐个更新项目无济于事,因为整个CardView闪烁:
int len = adapter.getItemCount();
for(int i=0;i<len;i++) {
adapter.notifyItemChanged(i);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法获得所有的列表ViewHolders然后更新(动画)TextView每个内部的那个?
我一直在研究一个问题,即在一个WebView(带有返回值)中对JavaScript进行同步调用,并试图缩小它为什么不起作用的地点和原因.WebView当主线程正在等待来自它的响应时,似乎线程正在阻塞 - 自从在WebView单独的线程上运行以来不应该是这种情况.
我把这个小样本放在一起,相当清楚地展示了它(我希望):
main.xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1">
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/webView"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
MyActivity.java:
package com.example.myapp;
import android.app.Activity;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.JavascriptInterface;
import android.webkit.WebViewClient;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class MyActivity extends Activity {
public final static String TAG = "MyActivity";
private WebView webView;
private JSInterface JS;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webView = (WebView)findViewById(R.id.webView);
JS = …Run Code Online (Sandbox Code Playgroud) 我正在使用FirebaseUI-Authentication.使用电子邮件或Google帐户登录是成功的,但使用Facebook登录无效.onActivityResult()在AuthUI活动开始并尝试使用Facebook登录后未调用.登录后尝试将应用程序停留在加载窗口.logcat输出FirebaseApp日志:
通知背景状态更改侦听器.
在Facebook应用程序仪表板上,我设置了有效的OAuth重定向URI,正如firebase指南所述,我将应用程序设置为公共(如果它是公共的还是处于开发状态,这是否重要?).在Firebase控制台中,我启用了Facebook登录并设置了App ID和App secret.
这是一个视频录制,显示点击登录活动后登录Facebook后发生的情况.
为什么不onActivityResult()叫?
主要活动:
/**
* Use this method to start the FirebaseUI sign in activity.
*/
public void switchToSignIn() {
this.activity.startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setProviders(
AuthUI.EMAIL_PROVIDER,
AuthUI.GOOGLE_PROVIDER,
AuthUI.FACEBOOK_PROVIDER)
.build(), RC_SIGN_IN);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == RC_SIGN_IN) {
if (resultCode == this.activity.RESULT_OK) {
// user is signed in!
Log.d(Constants.TAG_LoginHandler, …Run Code Online (Sandbox Code Playgroud) android facebook-authentication firebase firebase-authentication firebaseui
我写了一个订阅者,当谷歌地图被触发时会OnCameraChangeListener被触发.
Observable.create(new Observable.OnSubscribe<LatLng>()
{
@Override
public void call(Subscriber<? super LatLng> subscriber)
{
if (!subscriber.isUnsubscribed())
{
mMap.setOnCameraChangeListener(cameraPosition ->
subscriber.onNext(cameraPosition.target));
}
}
}).subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(Observable.<LatLng>empty())
.debounce(1, TimeUnit.SECONDS)
.subscribe(position -> {
if (position.latitude != 0 && position.longitude != 0)
{
updateLocationMarker(position);
}
});
Run Code Online (Sandbox Code Playgroud)
我正在更新位置标记,如下所示:
private void updateLocationMarker(LatLng center)
{
locationMarkertext.setText("Lat:" + center.latitude + " Long:" + center.longitude);
//locationMarkerLayout.setVisibility(View.VISIBLE);
}
Run Code Online (Sandbox Code Playgroud)
即使我的代码说要运行AndroidSchedulers.mainThread()我也会收到此错误:
引发者:rx.exceptions.OnErrorNotImplementedException:只有创建视图层次结构的原始线程才能触及其视图.
有人可以帮我理解我的方法有什么问题
我ViewPager内心面临一个重大的滚动问题CoordinatorLayout.
当前场景:
app:appbarScrollingViewBehaviour已开启ViewPager.ViewPager片段具有NestedScrollView其根父母.RecyclerView.RecyclerView,应用栏不会滚动,而是仅进行嵌套滚动.CoordinatorLayout滚动.6)嵌套滚动也在中途停止并切断内容.我已经尝试过了:
ViewPager里面NestedScrollView并设置 app:appbarScrollingViewBehaviour属性NestedScrollView.这完全切断了碎片内容,因为RecyclerView无法确定其高度.setAutoMeasureEnabled(true)上RecyclerView,依然没能解决的高度.RecyclerView行布局的代码.谢谢
activity.xml:
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:Customs="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/new_color_primary_skim">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsingLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:elevation="0dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:minHeight="?attr/actionBarSize">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|enterAlways"
android:layout_height="?attr/actionBarSize">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView …Run Code Online (Sandbox Code Playgroud) android android-fragments android-recyclerview android-coordinatorlayout
我奋斗YouTubePlayerSupportFragment了3天试图让它在滑动片段中运行.它现在显示这个错误,我已经尝试了其他方法并获得NullPointerException.是否有可能放入YouTubePlayerSupportFragment滑动片段?
java.lang.UnsupportedOperationException:com.google.android.youtube.player.YouTubePlayerView.addView(未知)的com.google.android.youtube.player.YouTubePlayerView.a(未知来源)播放器顶部无法添加视图源码)在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)的android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)android.support.v4.app.BackStackRecord .RUN(BackStackRecord.java:742)在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)在android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)在机器人. support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:164)在android.support.v4.view.ViewPager.populate(ViewPager.java:1177)在android.support.v4.view.ViewPager.populate(ViewPager. java:1025)在android.view.View.measure的android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1545)(View.java)位于android.widget.LineoutLayout.measure上的android.widget.Lineout.measureChildBayforeLayout(LinearLayout.java)上的android.view.measureGroup.measureChild.Mangins(ViewGroup.java).在Android.widget.LinearLayout上的android.widget.LinearLayout.measureVertical(LinearLayout.java) .onMeasure(LinearLayout.java)在android.support.design.widget.AppBarLayout.onMeasure(AppBarLayout.java:199)在android.view.View.measure(View.java)在android.view.ViewGroup.measureChildWithMargins(ViewGroup中. JAVA)在android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:668)在android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:735)在android.view.View.measure(查看.java)在android.sview.vision.measure(View.java)的android.view.vision上的android.sview.vision.measure(View.java)的android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1075) .widget.FrameLayout.onMeasure(FrameLayout.java)在android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLay)out.java:135)在android.view.measure.View.measure(View.java)的android.view.measure.View上进行android.view.measure.View中的android.widget.Lineout.measureChildBay前线的Android.widget.Lineout.measureChildBeforeLayout(LinearLayout.java).在Android.view.measure(View.java)的android.view.measure.View中,android.w上的android.w上的android.w上的android.w上的android.w上的android.上的android.view.measure.View(.View.java)的android.widget.Line中的LinearLayout.measureVertical(LinearLayout.java)的LinearLayout.measureVertical(LinearLayout.java) widget.FrameLayout.onMeasure(FrameLayout.java)在android.view.vision.measure(View.java)的android.view.visionGroup.measureChildWithMargins(ViewGroup.java)在android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java)at Android.widget.Lineout.measureVertical(LinearLayout.java)位于android.view.measure.View.measure(View.java)的android.widget.Linear.onMeasure(LinearLayout.java),位于android.view.ViewGroup.measureChildWithMargins(ViewGroup.java) )在com.android.internal.policy.PhoneWindow $ D的android.widget.FrameLayout.onMeasure(FrameLayout.java)ecorView.onMeasure(PhoneWindow.java)在android.view.View.measure(View.java)在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java)在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java)在机器人.在android.view.ViewRootImpl上的android.view.ViewRootImpl.doTraversal(ViewRootImpl.java)中的view.ViewRootImpl.performTraversals(ViewRootImpl.java)在android.view.Choreographer $ CallbackRecord.run(编舞)的TraversalRunnable.run(ViewRootImpl.java)的.java)在android.view.Choreographer.doCallbacks(Choreographer.java)在android.view.Choreographer.doFrame(Choreographer.java)在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java)在android.os.Handler .handleCallback(Handler.java)位于Android.os.Handler.dispatchMessage(Handler.java),位于android.app.Looper.loop(Looper.java),位于android.app.ActivityThread.main(ActivityThread.java),位于java.lang .reflect.Method.invoke(原生方法)
MainActivity.java:
import android.os.Bundle;
import android.support.design.widget.NavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));
tabLayout.addTab(tabLayout.newTab().setText("Tab …Run Code Online (Sandbox Code Playgroud) 以下是应用首次安装时的日志:
05-12 13:16:23.632 28250-28250/com.app.projectName W/System:ClassLoader引用未知路径:/data/app/com.app.projectName-1/lib/arm 05-12 13:16:59.041 28250-28250/com.app.projectName W/System:ClassLoader引用未知路径:/data/app/com.app.projectName-1/lib/arm 05-12 13:16:59.073 28250-28250/com.app. projectName I/MultiDex:版本2.1.0的VM具有multidex支持05-12 13:16:59.073 28250-28250/com.app.projectName I/MultiDex:install 05-12 13:16:59.073 28250-28250/com. app.projectName I/MultiDex:VM具有multidex支持,MultiDex支持库被禁用.
我MultiDex在我的项目中使用库它将完全在棒棒糖前设备下工作.这种延迟在Lollipop设备中在第一次应用启动时在30秒到90秒之间变化.
看它不是由于MultiDex对吗?因为时间是1.)初始化05-12 13:16:23.632,第二次登录是在36秒之后,即05-12 13:16:59.041
那个东西创建ClassLoader引用的app延迟.... MultiDex正在快速初始化.以下是截图
这需要15秒到30秒,有时甚至更长.
我的Gradle文件是:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.squareup.picasso:picasso:2.3.2'
compile 'com.bignerdranch.android:expandablerecyclerview:2.1.1'
compile 'com.github.siyamed:android-shape-imageview:0.9.+@aar'
compile 'org.apache.httpcomponents:httpcore:4.2.4'
compile 'org.apache.httpcomponents:httpmime:4.3'
compile 'com.google.code.gson:gson:2.5'
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'
compile 'co.lujun:androidtagview:1.0.2'
compile …Run Code Online (Sandbox Code Playgroud) android ×10
animation ×1
delay ×1
exoplayer ×1
firebase ×1
firebaseui ×1
java ×1
javascript ×1
listener ×1
progress ×1
rx-java ×1
webview ×1
youtube-api ×1