From bf0067a76cf35e278f5db31357e19acbd1375564 Mon Sep 17 00:00:00 2001
From: Meghna Gupta
Date: Sun, 18 Feb 2018 21:09:33 +0530
Subject: [PATCH 1/5] Hide Keypad when EditText out of focus
---
.../free/nrw/commons/auth/LoginActivity.java | 23 ++++++++++
.../category/CategorizationFragment.java | 46 +++++++++++++++++++
.../upload/MultipleUploadListFragment.java | 15 ++++++
app/src/main/res/layout/activity_login.xml | 6 ++-
.../res/layout/fragment_categorization.xml | 4 ++
.../layout/fragment_multiple_uploads_list.xml | 2 +
6 files changed, 95 insertions(+), 1 deletion(-)
diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
index 3e90fbf5e3..45ba353f07 100644
--- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
@@ -4,6 +4,7 @@
import android.accounts.AccountAuthenticatorActivity;
import android.accounts.AccountAuthenticatorResponse;
import android.accounts.AccountManager;
+import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -17,10 +18,12 @@
import android.support.v7.app.AppCompatDelegate;
import android.text.Editable;
import android.text.TextWatcher;
+import android.util.Log;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
@@ -91,7 +94,19 @@ public void onCreate(Bundle savedInstanceState) {
ButterKnife.bind(this);
usernameEdit.addTextChangedListener(textWatcher);
+ usernameEdit.setOnFocusChangeListener((v, hasFocus) -> {
+ if (!hasFocus) {
+ hideKeyboard(v);
+ }
+ });
+
passwordEdit.addTextChangedListener(textWatcher);
+ passwordEdit.setOnFocusChangeListener((v, hasFocus) -> {
+ if (!hasFocus) {
+ hideKeyboard(v);
+ }
+ });
+
twoFactorEdit.addTextChangedListener(textWatcher);
passwordEdit.setOnEditorActionListener(newLoginInputActionListener());
@@ -99,6 +114,14 @@ public void onCreate(Bundle savedInstanceState) {
signupButton.setOnClickListener(view -> signUp());
}
+
+ public void hideKeyboard(View view) {
+ Log.i("hide", "hideKeyboard: ");
+ InputMethodManager inputMethodManager =(InputMethodManager)this.getSystemService(Activity.INPUT_METHOD_SERVICE);
+ inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
+ }
+
+
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
index 7c2e910c40..37a63dadd2 100644
--- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
@@ -1,17 +1,22 @@
package fr.free.nrw.commons.category;
+import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
+import android.text.Editable;
import android.text.TextUtils;
+import android.text.TextWatcher;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
@@ -37,6 +42,7 @@
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
import fr.free.nrw.commons.mwapi.MediaWikiApi;
import fr.free.nrw.commons.upload.MwVolleyApi;
+import fr.free.nrw.commons.upload.SingleUploadFragment;
import fr.free.nrw.commons.utils.StringSortingUtils;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -72,6 +78,7 @@ public class CategorizationFragment extends CommonsDaggerSupportFragment {
private OnCategoriesSaveHandler onCategoriesSaveHandler;
private HashMap> categoriesCache;
private List selectedCategories = new ArrayList<>();
+ private TitleTextWatcher textWatcher = new TitleTextWatcher();
private final CategoriesAdapterFactory adapterFactory = new CategoriesAdapterFactory(item -> {
if (item.isSelected()) {
@@ -102,6 +109,15 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
categoriesAdapter = adapterFactory.create(items);
categoriesList.setAdapter(categoriesAdapter);
+
+ categoriesFilter.addTextChangedListener(textWatcher);
+
+ categoriesFilter.setOnFocusChangeListener((v, hasFocus) -> {
+ if (!hasFocus) {
+ hideKeyboard(v);
+ }
+ });
+
RxTextView.textChanges(categoriesFilter)
.takeUntil(RxView.detaches(categoriesFilter))
.debounce(500, TimeUnit.MILLISECONDS)
@@ -110,6 +126,19 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
return rootView;
}
+ public void hideKeyboard(View view) {
+ Log.i("hide", "hideKeyboard: ");
+ InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
+ inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
+ }
+
+ @Override
+ public void onDestroyView() {
+ categoriesFilter.removeTextChangedListener(textWatcher);
+ super.onDestroyView();
+ }
+
+
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
@@ -351,4 +380,21 @@ private void showConfirmationDialog() {
.create()
.show();
}
+
+ private class TitleTextWatcher implements TextWatcher {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ if (getActivity() != null) {
+ getActivity().invalidateOptionsMenu();
+ }
+ }
+ }
}
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
index 0b6e527e58..4797299af0 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
@@ -1,5 +1,6 @@
package fr.free.nrw.commons.upload;
+import android.app.Activity;
import android.content.Context;
import android.graphics.Point;
import android.net.Uri;
@@ -10,6 +11,7 @@
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -177,9 +179,22 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
photosGrid.setColumnWidth(photoSize.x);
baseTitle.addTextChangedListener(textWatcher);
+
+ baseTitle.setOnFocusChangeListener((v, hasFocus) -> {
+ if (!hasFocus) {
+ hideKeyboard(v);
+ }
+ });
+
return view;
}
+ public void hideKeyboard(View view) {
+ Log.i("hide", "hideKeyboard: ");
+ InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
+ inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
+ }
+
@Override
public void onDestroyView() {
baseTitle.removeTextChangedListener(textWatcher);
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 278e3464f6..760b7a388f 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -19,6 +19,8 @@
android:layout_marginRight="@dimen/standard_gap"
android:layout_marginStart="@dimen/standard_gap"
android:layout_marginTop="@dimen/large_gap"
+ android:clickable="true"
+ android:focusableInTouchMode="true"
app:cardCornerRadius="4dp"
app:cardElevation="4dp">
@@ -26,7 +28,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
- android:orientation="vertical">
+ android:orientation="vertical"
+ android:clickable="true"
+ android:focusableInTouchMode="true">
Date: Sun, 18 Feb 2018 21:58:05 +0530
Subject: [PATCH 2/5] Log statement removed
---
app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
index 45ba353f07..b771e8c1dd 100644
--- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
@@ -116,7 +116,6 @@ public void onCreate(Bundle savedInstanceState) {
public void hideKeyboard(View view) {
- Log.i("hide", "hideKeyboard: ");
InputMethodManager inputMethodManager =(InputMethodManager)this.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
From 667591d04e037d1fff749a0ffe6678a3c21b7ab8 Mon Sep 17 00:00:00 2001
From: Meghna Gupta
Date: Sun, 18 Feb 2018 21:58:36 +0530
Subject: [PATCH 3/5] Log statement removed
---
.../fr/free/nrw/commons/category/CategorizationFragment.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
index 37a63dadd2..c826013f00 100644
--- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
@@ -127,7 +127,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
}
public void hideKeyboard(View view) {
- Log.i("hide", "hideKeyboard: ");
InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
From dac7a7dc09ea5f80ea7ee4d716511fbfd9adf1af Mon Sep 17 00:00:00 2001
From: Meghna Gupta
Date: Sun, 18 Feb 2018 21:59:34 +0530
Subject: [PATCH 4/5] Log statement removed
---
.../fr/free/nrw/commons/upload/MultipleUploadListFragment.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
index 4797299af0..5b39b92f7c 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
@@ -190,7 +190,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
}
public void hideKeyboard(View view) {
- Log.i("hide", "hideKeyboard: ");
InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
From 4bb6e9b35e95070f177d35837e1d49710a15ffa0 Mon Sep 17 00:00:00 2001
From: Meghna Gupta
Date: Sun, 18 Feb 2018 22:29:15 +0530
Subject: [PATCH 5/5] Hide Keypad when EditText out of focus
---
.../free/nrw/commons/auth/LoginActivity.java | 1 -
.../category/CategorizationFragment.java | 1 -
.../upload/MultipleUploadListFragment.java | 1 -
app/src/main/res/layout/activity_login.xml | 20 +++----
.../res/layout/fragment_categorization.xml | 53 ++++++++-----------
.../layout/fragment_multiple_uploads_list.xml | 1 +
6 files changed, 34 insertions(+), 43 deletions(-)
diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
index 45ba353f07..b771e8c1dd 100644
--- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
+++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java
@@ -116,7 +116,6 @@ public void onCreate(Bundle savedInstanceState) {
public void hideKeyboard(View view) {
- Log.i("hide", "hideKeyboard: ");
InputMethodManager inputMethodManager =(InputMethodManager)this.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
index 37a63dadd2..c826013f00 100644
--- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java
@@ -127,7 +127,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container,
}
public void hideKeyboard(View view) {
- Log.i("hide", "hideKeyboard: ");
InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
diff --git a/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java b/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
index 4797299af0..5b39b92f7c 100644
--- a/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
+++ b/app/src/main/java/fr/free/nrw/commons/upload/MultipleUploadListFragment.java
@@ -190,7 +190,6 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa
}
public void hideKeyboard(View view) {
- Log.i("hide", "hideKeyboard: ");
InputMethodManager inputMethodManager =(InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml
index 760b7a388f..15d4c099d7 100644
--- a/app/src/main/res/layout/activity_login.xml
+++ b/app/src/main/res/layout/activity_login.xml
@@ -27,10 +27,10 @@
+ android:focusableInTouchMode="true"
+ android:gravity="center"
+ android:orientation="vertical">
diff --git a/app/src/main/res/layout/fragment_categorization.xml b/app/src/main/res/layout/fragment_categorization.xml
index 1b8a8fc09e..5867ea61cc 100644
--- a/app/src/main/res/layout/fragment_categorization.xml
+++ b/app/src/main/res/layout/fragment_categorization.xml
@@ -1,74 +1,67 @@
+ android:theme="@style/DarkAppTheme">
+ android:focusableInTouchMode="true">
+ android:inputType="textCapWords"
+ android:maxLines="1" />
+ android:visibility="gone" />
+ android:visibility="gone" />
+ android:visibility="gone" />
+ android:layout_height="wrap_content"
+ android:fadingEdge="none" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_multiple_uploads_list.xml b/app/src/main/res/layout/fragment_multiple_uploads_list.xml
index 195f821c37..9323e3c061 100644
--- a/app/src/main/res/layout/fragment_multiple_uploads_list.xml
+++ b/app/src/main/res/layout/fragment_multiple_uploads_list.xml
@@ -25,4 +25,5 @@
android:fadingEdge="none"
android:fastScrollEnabled="false"
/>
+
\ No newline at end of file