小编Tim*_*Tim的帖子

使FAB不会被夹在底部导航栏中

我正在尝试将底部导航栏与FAB重叠。我希望我的导航栏看起来像这样:

所需结果

但是相反,它像这样切断了按钮:

当前结果

如何防止FAB被切断?这是我的XML:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.mobgen.designsprintapp.ui.main.MainActivity">

    <LinearLayout 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:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.v4.view.ViewPager
            android:id="@+id/viewpager"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        <android.support.design.widget.BottomNavigationView
            android:id="@+id/navigation"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:background="?android:attr/windowBackground"
            android:backgroundTint="@color/colorPrimary"
            app:itemBackground="@color/colorPrimary"
            app:itemIconTint="@color/nav_item_color_state"
            app:itemTextColor="@android:color/black"
            app:menu="@menu/navigation" >

            <android.support.design.widget.FloatingActionButton
                android:id="@+id/tools"
                android:layout_width="56dp"
                android:layout_height="56dp"
                android:layout_gravity="center"
                android:layout_marginBottom="8dp"
                android:elevation="6dp"
                android:scaleType="center"
                app:srcCompat="@drawable/play" />
            </android.support.design.widget.BottomNavigationView>
    </LinearLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

xml android android-layout android-view floating-action-button

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

更新到 Android Studio 4.1 后,Android 包视图消失了

安装最新的Android Studio 4.1时,我在项目中的Android View只显示gradle文件,不再显示模块和文件。有没有办法解决这个问题?

当前 Android 视图

android android-studio

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

结合Facebook和Google auth for Firebase Android

背景

大家好,我是Firebase for Android的新手,我正试图首次实现Facebook和Google身份验证/登录.我按照这两个教程进行了相应的身份验证:

  • http:// firebase.google.com/docs/auth/android/google-signin
  • http:// firebase.google.com/docs/auth/android/facebook-login

另外,在FacebookSignInActivityGoogleSignInActivity正在努力,他们应该.

问题

问题是我试图在同一活动中使用Google和Facebook身份验证,但它不起作用.像这样:

结果布局图像

我做了什么

我试图通过让它们扩展并在那里设置布局来保持FacebookSignInActivity分离.GoogleSignInActivityMainActivity

但我认为我应该把这两者合二为一.所以我尝试了但是我得到了一个奇怪的nullpointer异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.firebase.auth.FirebaseAuth.addAuthStateListener(com.google.firebase.auth.FirebaseAuth$AuthStateListener)' on a null object reference
Run Code Online (Sandbox Code Playgroud)

我不知道为什么对象在null中是onCreate因为我从其他两个正在运行的活动中复制了相同的代码:

 mAuth = FirebaseAuth.getInstance();

 mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in
                    Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
                } else {
                    // User is signed out
                    Log.d(TAG, …
Run Code Online (Sandbox Code Playgroud)

android google-authentication facebook-authentication firebase firebase-authentication

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

非 android 模块清洁架构设置中的 Hilt

我有一个多模块化 android 应用程序设置,它由一个数据、域和演示模块组成。域模块是纯 Java 的。我知道可以通过添加以下内容来支持非 android 模块中的刀柄:

领域 build.gradle

implementation "com.google.dagger:hilt-core:$hilt_version"
kapt "com.google.dagger:hilt-compiler:$hilt_version"
Run Code Online (Sandbox Code Playgroud)

域模块提供了 UseCase 类的实现,这些类应该注入到位于 Presentation (app) 模块中的 ViewModel 中。

域模块:

@Module
@InstallIn(SingletonComponent::class)
//   @InstallIn(ViewModelComponent::class)
object UseCaseModule {

    @Provides
    //    @ViewModelScoped
    fun provideGetMovieDetailsUseCase(
        movieRepository: MovieRepository
    ): GetMovieDetailsUseCase {
        return GetMovieDetailsUseCaseImpl(movieRepository)
    }
}
Run Code Online (Sandbox Code Playgroud)

演示模块:

@HiltViewModel
class MovieDetailViewModel @Inject constructor(
    private val getMovieDetailsUseCase: GetMovieDetailsUseCase
) : ViewModel() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

由于 java-only 模块的性质,我不能使用@InstallIn(ViewModelComponent::class)注释。相反,我必须在SingletonComponent::class. 这也是在这里的 awnser 中完成的

我的问题

这种方法是“最佳实践”吗?还是将库设为 Android 库更好,以便我可以将依赖范围限定为 ViewModel?我更愿意将它保留为仅限 Java 的库。

java android kotlin android-module dagger-hilt

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