diff --git a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt index d09bfcdd5..501593d06 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/MainActivity.kt @@ -107,17 +107,6 @@ class MainActivity : BaseActivity(), ActionBarProvider { } } - @OnClick(R.id.floatingActionButton) - fun onFloatingActionButtonClick() { - val bundle = Bundle() - bundle.putBoolean(BundleKeys.KEY_NEW_CONVERSATION, true) - router?.pushController( - RouterTransaction.with(ContactsController(bundle)) - .pushChangeHandler(HorizontalChangeHandler()) - .popChangeHandler(HorizontalChangeHandler())) - } - - @RequiresApi(api = Build.VERSION_CODES.M) fun checkIfWeAreSecure() { val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt index 86494bfe8..2c02a065d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.kt @@ -30,11 +30,13 @@ import android.text.InputType import android.util.Log import android.view.* import android.view.inputmethod.EditorInfo +import android.widget.FrameLayout import android.widget.ProgressBar import android.widget.RelativeLayout import androidx.appcompat.widget.SearchView import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.view.MenuItemCompat +import androidx.core.widget.NestedScrollView import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import androidx.work.Data @@ -132,7 +134,7 @@ class ContactsController : BaseController, @JvmField @BindView(R.id.generic_rv_layout) - var genericRvLayout: CoordinatorLayout? = null + var genericRvLayout: FrameLayout? = null private var credentials: String? = null private var currentUser: UserNgEntity? = null diff --git a/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt index 43d9b3d8f..3aefdc8f0 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt +++ b/app/src/main/java/com/nextcloud/talk/controllers/base/BaseController.kt @@ -33,7 +33,6 @@ import android.view.inputmethod.InputMethodManager import android.widget.EditText import androidx.annotation.RequiresApi import androidx.appcompat.app.ActionBar -import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.view.isVisible import com.bluelinelabs.conductor.ControllerChangeHandler import com.bluelinelabs.conductor.ControllerChangeType @@ -44,11 +43,11 @@ import com.nextcloud.talk.R import com.nextcloud.talk.activities.MainActivity import com.nextcloud.talk.controllers.SwitchAccountController import com.nextcloud.talk.controllers.base.providers.ActionBarProvider -import com.nextcloud.talk.utils.FABAwareScrollingViewBehavior import com.nextcloud.talk.utils.preferences.AppPreferences import com.uber.autodispose.lifecycle.LifecycleScopeProvider import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.search_layout.* +import kotlinx.android.synthetic.main.search_layout.view.* import org.greenrobot.eventbus.EventBus import org.koin.android.ext.android.inject import java.util.* @@ -73,18 +72,6 @@ abstract class BaseController : ButterKnifeController(), ComponentCallbacks { return actionBarProvider?.supportActionBar } - protected val floatingActionButton: FloatingActionButton? - get() { - var floatingActionButton: FloatingActionButton? = null - activity?.let { - if (it is MainActivity) { - floatingActionButton = it.floatingActionButton - } - } - - return floatingActionButton - } - protected val appBar: AppBarLayout? get() { var appBarLayout: AppBarLayout? = null @@ -124,22 +111,12 @@ abstract class BaseController : ButterKnifeController(), ComponentCallbacks { activity?.let { if (it is MainActivity) { it.searchCardView.isVisible = value - it.floatingActionButton.isVisible = value it.inputEditText.hint = getSearchHint() - - val layoutParamsForContainer = it.container.layoutParams as CoordinatorLayout.LayoutParams - val layoutParams = it.toolbar.layoutParams as AppBarLayout.LayoutParams if (value) { - layoutParamsForContainer.behavior = FABAwareScrollingViewBehavior() - layoutParams.scrollFlags = AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL or AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP or AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS it.appBar.setBackgroundResource(R.color.transparent) } else { - layoutParamsForContainer.behavior = AppBarLayout.ScrollingViewBehavior() - layoutParams.scrollFlags = 0 it.appBar.setBackgroundResource(R.color.colorPrimary) } - it.container.layoutParams = layoutParamsForContainer - it.toolbar.layoutParams = layoutParams } } diff --git a/app/src/main/java/com/nextcloud/talk/newarch/data/repository/offline/UsersRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/newarch/data/repository/offline/UsersRepositoryImpl.kt index ad6df77dc..5e678b945 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/data/repository/offline/UsersRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/data/repository/offline/UsersRepositoryImpl.kt @@ -27,11 +27,11 @@ import com.nextcloud.talk.newarch.local.dao.UsersDao import com.nextcloud.talk.newarch.local.models.UserNgEntity class UsersRepositoryImpl(private val usersDao: UsersDao) : UsersRepository { - override fun getActiveUserLiveData(): LiveData { + override fun getActiveUserLiveData(): LiveData { return usersDao.getActiveUserLiveData().distinctUntilChanged() } - override fun getActiveUser(): UserNgEntity { + override fun getActiveUser(): UserNgEntity? { return usersDao.getActiveUser() } diff --git a/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt b/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt index f7526de4c..d78c83957 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/di/module/NetworkModule.kt @@ -108,9 +108,9 @@ fun createOkHttpClient( val httpClient = OkHttpClient.Builder() httpClient.retryOnConnectionFailure(true) - httpClient.connectTimeout(45, TimeUnit.SECONDS) - httpClient.readTimeout(45, TimeUnit.SECONDS) - httpClient.writeTimeout(45, TimeUnit.SECONDS) + httpClient.connectTimeout(300, TimeUnit.SECONDS) + httpClient.readTimeout(300, TimeUnit.SECONDS) + httpClient.writeTimeout(300, TimeUnit.SECONDS) httpClient.cookieJar(JavaNetCookieJar(cookieManager)) httpClient.cache(cache) diff --git a/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/offline/UsersRepository.kt b/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/offline/UsersRepository.kt index a0b431126..95d96f7b4 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/offline/UsersRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/domain/repository/offline/UsersRepository.kt @@ -24,7 +24,7 @@ import androidx.lifecycle.LiveData import com.nextcloud.talk.newarch.local.models.UserNgEntity interface UsersRepository { - fun getActiveUserLiveData(): LiveData + fun getActiveUserLiveData(): LiveData fun getActiveUser(): UserNgEntity? fun getUsers(): List fun getUserWithId(id: Long): UserNgEntity diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryViewModel.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryViewModel.kt index 4773ca95e..4265f98e6 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/account/loginentry/LoginEntryViewModel.kt @@ -146,15 +146,18 @@ class LoginEntryViewModel constructor( private suspend fun getSignalingSettings() { getSignalingSettingsUseCase.invoke(ioScope, parametersOf(user), object : UseCaseResponse { override suspend fun onSuccess(result: SignalingSettingsOverall) { - user.signalingSettings = result.ocs.signalingSettings - val pushConfiguration = PushConfiguration() - val pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PENDING, 0) - pushConfiguration.pushConfigurationStateWrapper = pushConfigurationStateWrapper - usersRepository.insertUser(user) - setAdjustedUserAsActive() - registerForPush() + withContext(Dispatchers.IO) { + user.signalingSettings = result.ocs.signalingSettings + val pushConfiguration = PushConfiguration() + val pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PENDING, 0) + pushConfiguration.pushConfigurationStateWrapper = pushConfigurationStateWrapper + usersRepository.insertUser(user) + setAdjustedUserAsActive() + registerForPush() + } } + override suspend fun onError(errorModel: ErrorModel?) { state.postValue(LoginEntryStateWrapper(LoginEntryState.FAILED, LoginEntryStateClarification.SIGNALING_SETTINGS_FETCH_FAILED)) } @@ -176,19 +179,23 @@ class LoginEntryViewModel constructor( val options = PushUtils(usersRepository).getMapForPushRegistrationWithServer(context, token) registerPushWithServerUseCase.invoke(ioScope, parametersOf(user, options), object : UseCaseResponse { override suspend fun onSuccess(result: PushRegistrationOverall) { - user.pushConfiguration?.deviceIdentifier = result.ocs.data.deviceIdentifier - user.pushConfiguration?.deviceIdentifierSignature = result.ocs.data.signature - user.pushConfiguration?.userPublicKey = result.ocs.data.publicKey - user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.SERVER_REGISTRATION_DONE, null) - usersRepository.updateUser(user) - registerForPushWithProxy() + withContext(Dispatchers.IO) { + user.pushConfiguration?.deviceIdentifier = result.ocs.data.deviceIdentifier + user.pushConfiguration?.deviceIdentifierSignature = result.ocs.data.signature + user.pushConfiguration?.userPublicKey = result.ocs.data.publicKey + user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.SERVER_REGISTRATION_DONE, null) + usersRepository.updateUser(user) + registerForPushWithProxy() + } } override suspend fun onError(errorModel: ErrorModel?) { - user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_SERVER_REGISTRATION - user.pushConfiguration?.pushConfigurationStateWrapper?.reason = errorModel?.code - usersRepository.updateUser(user) - state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_SERVER_FAILED)) + withContext(Dispatchers.IO) { + user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_SERVER_REGISTRATION + user.pushConfiguration?.pushConfigurationStateWrapper?.reason = errorModel?.code + usersRepository.updateUser(user) + state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_SERVER_FAILED)) + } } }) } @@ -199,9 +206,11 @@ class LoginEntryViewModel constructor( if (options != null) { registerPushWithProxyUseCase.invoke(ioScope, parametersOf(user, options), object : UseCaseResponse { override suspend fun onSuccess(result: Any) { - user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PROXY_REGISTRATION_DONE, null) - usersRepository.updateUser(user) - state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, if (!updatingUser) LoginEntryStateClarification.ACCOUNT_CREATED else LoginEntryStateClarification.ACCOUNT_UPDATED)) + withContext(Dispatchers.IO) { + user.pushConfiguration?.pushConfigurationStateWrapper = PushConfigurationStateWrapper(PushConfigurationState.PROXY_REGISTRATION_DONE, null) + usersRepository.updateUser(user) + state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, if (!updatingUser) LoginEntryStateClarification.ACCOUNT_CREATED else LoginEntryStateClarification.ACCOUNT_UPDATED)) + } } override suspend fun onError(errorModel: ErrorModel?) { @@ -215,9 +224,11 @@ class LoginEntryViewModel constructor( } }) } else { - user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_PROXY_REGISTRATION - usersRepository.updateUser(user) - state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_PUSH_PROXY_FAILED)) + withContext(Dispatchers.IO) { + user.pushConfiguration?.pushConfigurationStateWrapper?.pushConfigurationState = PushConfigurationState.FAILED_WITH_PROXY_REGISTRATION + usersRepository.updateUser(user) + state.postValue(LoginEntryStateWrapper(LoginEntryState.OK, LoginEntryStateClarification.PUSH_REGISTRATION_WITH_PUSH_PROXY_FAILED)) + } } } diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListView.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListView.kt index bf8b9bec8..33adfc567 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListView.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListView.kt @@ -27,6 +27,7 @@ import android.view.View import android.view.ViewGroup import androidx.core.view.isVisible import androidx.lifecycle.observe +import butterknife.OnClick import com.afollestad.materialdialogs.LayoutMode import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.bottomsheets.BottomSheet @@ -94,12 +95,12 @@ class ConversationsListView : BaseView() { view.apply { recyclerView.initRecyclerView(SmoothScrollLinearLayoutManager(activity), adapter, false) - swipeRefreshLayoutView.setOnRefreshListener { + /*swipeRefreshLayoutView.setOnRefreshListener { view.swipeRefreshLayoutView.isRefreshing = false viewModel.loadConversations() } - swipeRefreshLayoutView.setColorSchemeResources(R.color.colorPrimary) + swipeRefreshLayoutView.setColorSchemeResources(R.color.colorPrimary)*/ } activity?.inputEditText?.addTextChangedListener(DebouncingTextWatcher(lifecycle, ::setSearchQuery)) @@ -137,6 +138,16 @@ class ConversationsListView : BaseView() { return view } + @OnClick(R.id.floatingActionButton) + fun onFloatingActionButtonClick() { + val bundle = Bundle() + bundle.putBoolean(BundleKeys.KEY_NEW_CONVERSATION, true) + router?.pushController( + RouterTransaction.with(ContactsController(bundle)) + .pushChangeHandler(HorizontalChangeHandler()) + .popChangeHandler(HorizontalChangeHandler())) + } + override fun onChangeStarted(changeHandler: ControllerChangeHandler, changeType: ControllerChangeType) { actionBar?.setIcon(null) super.onChangeStarted(changeHandler, changeType) diff --git a/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListViewModel.kt b/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListViewModel.kt index d6cdc8f0c..f97669ff0 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/features/conversationsList/ConversationsListViewModel.kt @@ -22,9 +22,7 @@ package com.nextcloud.talk.newarch.features.conversationslist import android.app.Application import android.graphics.drawable.Drawable -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.Transformations -import androidx.lifecycle.viewModelScope +import androidx.lifecycle.* import coil.Coil import coil.api.get import coil.transform.CircleCropTransformation @@ -68,12 +66,21 @@ class ConversationsListViewModel constructor( if (networkStateLiveData.value != ConversationsListViewNetworkState.LOADING) { networkStateLiveData.postValue(ConversationsListViewNetworkState.LOADING) } - loadConversations() - loadAvatar() + + if (user != null) { + loadConversations() + loadAvatar() + } filterLiveData.value = null Transformations.switchMap(filterLiveData) { filter -> - conversationsRepository.getConversationsForUser(user.id!!, filter) + if (user != null) { + conversationsRepository.getConversationsForUser(user.id!!, filter) + } else { + liveData { + listOf() + } + } } } diff --git a/app/src/main/java/com/nextcloud/talk/newarch/local/dao/UsersDao.kt b/app/src/main/java/com/nextcloud/talk/newarch/local/dao/UsersDao.kt index 3bc4072cf..95f12021d 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/local/dao/UsersDao.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/local/dao/UsersDao.kt @@ -29,10 +29,10 @@ import com.nextcloud.talk.newarch.local.models.other.UserStatus abstract class UsersDao { // get active user @Query("SELECT * FROM users where status = 1") - abstract fun getActiveUser(): UserNgEntity + abstract fun getActiveUser(): UserNgEntity? @Query("SELECT * FROM users WHERE status = 1") - abstract fun getActiveUserLiveData(): LiveData + abstract fun getActiveUserLiveData(): LiveData @Query("DELETE FROM users WHERE id = :id") abstract suspend fun deleteUserWithId(id: Long) diff --git a/app/src/main/java/com/nextcloud/talk/newarch/services/GlobalService.kt b/app/src/main/java/com/nextcloud/talk/newarch/services/GlobalService.kt index 5d2d8b4b5..0185f09b4 100644 --- a/app/src/main/java/com/nextcloud/talk/newarch/services/GlobalService.kt +++ b/app/src/main/java/com/nextcloud/talk/newarch/services/GlobalService.kt @@ -47,7 +47,7 @@ class GlobalService constructor(usersRepository: UsersRepository, private val getConversationUseCase: GetConversationUseCase) : KoinComponent { private val applicationScope = CoroutineScope(Dispatchers.Default) private val previousUser: UserNgEntity? = null - val currentUserLiveData: LiveData = usersRepository.getActiveUserLiveData() + val currentUserLiveData: LiveData = usersRepository.getActiveUserLiveData() private var currentConversation: Conversation? = null init { diff --git a/app/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java b/app/src/main/java/com/nextcloud/talk/utils/animations/FABAwareScrollingViewBehavior.java similarity index 69% rename from app/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java rename to app/src/main/java/com/nextcloud/talk/utils/animations/FABAwareScrollingViewBehavior.java index c56297bf7..ac810d193 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/FABAwareScrollingViewBehavior.java +++ b/app/src/main/java/com/nextcloud/talk/utils/animations/FABAwareScrollingViewBehavior.java @@ -13,22 +13,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.nextcloud.talk.utils; +package com.nextcloud.talk.utils.animations; import android.content.Context; import android.util.AttributeSet; import android.view.View; +import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.view.ViewCompat; import com.google.android.material.appbar.AppBarLayout; import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.nextcloud.talk.R; import java.util.List; public class FABAwareScrollingViewBehavior extends AppBarLayout.ScrollingViewBehavior { + private boolean slidingDown = false; + private int searchBarHeight; + public FABAwareScrollingViewBehavior() { } @@ -36,6 +42,14 @@ public class FABAwareScrollingViewBehavior extends AppBarLayout.ScrollingViewBeh super(context, attrs); } + @Override + protected void layoutChild(@NonNull CoordinatorLayout parent, @NonNull View child, int layoutDirection) { + if (child.getId() == R.id.searchCardView) { + searchBarHeight = child.getHeight(); + } + super.layoutChild(parent, child, layoutDirection); + } + @Override public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) { return super.layoutDependsOn(parent, child, dependency) || @@ -55,14 +69,16 @@ public class FABAwareScrollingViewBehavior extends AppBarLayout.ScrollingViewBeh public void onNestedScroll(final CoordinatorLayout coordinatorLayout, final View child, final View target, final int dxConsumed, final int dyConsumed, final int dxUnconsumed, final int dyUnconsumed) { - super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, - dyUnconsumed); + //super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, + // dyUnconsumed); if (dyConsumed > 0) { // User scrolled down -> hide the FAB List dependencies = coordinatorLayout.getDependencies(child); for (View view : dependencies) { if (view instanceof FloatingActionButton) { ((FloatingActionButton) view).hide(); + } else if (view.getId() == R.id.searchCardView) { + //slideUp(child); } } } else if (dyConsumed < 0) { @@ -71,8 +87,26 @@ public class FABAwareScrollingViewBehavior extends AppBarLayout.ScrollingViewBeh for (View view : dependencies) { if (view instanceof FloatingActionButton) { ((FloatingActionButton) view).show(); + } else if (view.getId() == R.id.searchCardView) { + //slideDown(view); } } } } + + private void slideUp(View child) { + if (slidingDown) { + slidingDown = false; + child.clearAnimation(); + child.animate().translationY(0).setDuration(200); + } + } + + private void slideDown(View child) { + if (!slidingDown) { + slidingDown = true; + child.clearAnimation(); + child.animate().translationY(searchBarHeight).setDuration(200); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/nextcloud/talk/utils/animations/ViewHidingBehaviourAnimation.java b/app/src/main/java/com/nextcloud/talk/utils/animations/ViewHidingBehaviourAnimation.java index fb7aa805d..117a6872f 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/animations/ViewHidingBehaviourAnimation.java +++ b/app/src/main/java/com/nextcloud/talk/utils/animations/ViewHidingBehaviourAnimation.java @@ -30,7 +30,9 @@ import androidx.annotation.NonNull; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.view.ViewCompat; -public class ViewHidingBehaviourAnimation extends CoordinatorLayout.Behavior { +import com.google.android.material.appbar.AppBarLayout; + +public class ViewHidingBehaviourAnimation extends AppBarLayout.ScrollingViewBehavior { private int height; private boolean slidingDown = false; diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 15fa8ee5d..dffa0a1f3 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -26,7 +26,7 @@ android:layout_height="match_parent" tools:context=".activities.MainActivity" android:animateLayoutChanges="true" - android:background="@color/transparent"> + android:fitsSystemWindows="true"> - + - - - + android:layout_height="match_parent" /> diff --git a/app/src/main/res/layout/conversations_list_view.xml b/app/src/main/res/layout/conversations_list_view.xml index c2c7b16dc..5db9bf4bd 100644 --- a/app/src/main/res/layout/conversations_list_view.xml +++ b/app/src/main/res/layout/conversations_list_view.xml @@ -18,7 +18,7 @@ ~ along with this program. If not, see . --> - - - - - + - + diff --git a/app/src/main/res/layout/search_layout.xml b/app/src/main/res/layout/search_layout.xml index 1d1109937..31939ffee 100644 --- a/app/src/main/res/layout/search_layout.xml +++ b/app/src/main/res/layout/search_layout.xml @@ -37,8 +37,8 @@ app:contentPaddingRight="16dp" android:background="@color/transparent" app:cardBackgroundColor="@color/transparent" - android:elevation="4dp" - app:cardElevation="4dp" + android:elevation="2dp" + app:cardElevation="2dp" android:visibility="gone"> @color/nc_incoming_text_default @style/appActionBarPopupMenu @style/appActionBarPopupMenu - @color/colorPrimary - @style/appActionBarStyle