diff --git a/briar-android/res/layout/activity_password.xml b/briar-android/res/layout/activity_password.xml
index fc633e841addd3448da5b3be0ff69b8ad714d806..dff9612aad563a5cf197bf76ae9a8cd18ac9565a 100644
--- a/briar-android/res/layout/activity_password.xml
+++ b/briar-android/res/layout/activity_password.xml
@@ -27,7 +27,6 @@
         android:hint="@string/password_hint"
         android:imeOptions="actionDone"
         android:inputType="textPassword"
-        android:lines="1"
         android:maxLines="1" />
 
     <Button
diff --git a/briar-android/res/layout/activity_setup.xml b/briar-android/res/layout/activity_setup.xml
index f484946166b1e8e3a1abc6deba9700aa394ea669..d5ec69ba6828ffcc77f2c5a7d0a309e364300743 100644
--- a/briar-android/res/layout/activity_setup.xml
+++ b/briar-android/res/layout/activity_setup.xml
@@ -22,7 +22,7 @@
 			android:layout_height="wrap_content"
 			android:gravity="center"
 			android:text="@string/choose_nickname"
-			android:textSize="18sp"/>
+			android:textSize="@dimen/text_size_medium"/>
 
 		<android.support.design.widget.TextInputLayout
 			android:id="@+id/nickname_entry_wrapper"
@@ -43,7 +43,7 @@
 			android:layout_height="wrap_content"
 			android:gravity="center"
 			android:text="@string/choose_password"
-			android:textSize="18sp"/>
+			android:textSize="@dimen/text_size_medium"/>
 
 		<android.support.design.widget.TextInputLayout
 			android:id="@+id/password_entry_wrapper"
@@ -64,7 +64,7 @@
 			android:layout_height="wrap_content"
 			android:gravity="center"
 			android:text="@string/confirm_password"
-			android:textSize="18sp"/>
+			android:textSize="@dimen/text_size_medium"/>
 
 		<android.support.design.widget.TextInputLayout
 			android:id="@+id/password_confirm_wrapper"
@@ -77,6 +77,7 @@
 				android:layout_width="match_parent"
 				android:layout_height="wrap_content"
 				android:inputType="textPassword"
+				android:imeOptions="actionDone"
 				android:maxLines="1"/>
 		</android.support.design.widget.TextInputLayout>
 
@@ -88,7 +89,7 @@
 
 		<Button
 			android:id="@+id/create_account"
-			android:layout_width="wrap_content"
+			android:layout_width="match_parent"
 			android:layout_height="wrap_content"
 			android:enabled="false"
 			android:text="@string/create_account_button"/>
diff --git a/briar-android/src/org/briarproject/android/PasswordActivity.java b/briar-android/src/org/briarproject/android/PasswordActivity.java
index f0c1a5fe3d30824ded7aa768ae3a5db5adc3e089..fed1a6201a97fff1dbc528feeeddb54348742b14 100644
--- a/briar-android/src/org/briarproject/android/PasswordActivity.java
+++ b/briar-android/src/org/briarproject/android/PasswordActivity.java
@@ -29,7 +29,6 @@ import static android.content.Intent.ACTION_MAIN;
 import static android.content.Intent.CATEGORY_HOME;
 import static android.view.View.INVISIBLE;
 import static android.view.View.VISIBLE;
-import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
 
 public class PasswordActivity extends BaseActivity {
 
@@ -63,11 +62,11 @@ public class PasswordActivity extends BaseActivity {
 		password = (EditText) findViewById(R.id.edit_password);
 		password.setOnEditorActionListener(new OnEditorActionListener() {
 			@Override
-			public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-				if (actionId == IME_ACTION_DONE) {
-					validatePassword(encrypted, password.getText());
-				}
-				return false;
+			public boolean onEditorAction(TextView v, int actionId,
+					KeyEvent event) {
+				hideSoftKeyboard();
+				validatePassword(encrypted, password.getText());
+				return true;
 			}
 		});
 	}
diff --git a/briar-android/src/org/briarproject/android/SetupActivity.java b/briar-android/src/org/briarproject/android/SetupActivity.java
index e7940b0ffead77b43154a13db4fbdce000f4a365..2713b9984319f0c4f32bbd07e80db1c51d79ff8f 100644
--- a/briar-android/src/org/briarproject/android/SetupActivity.java
+++ b/briar-android/src/org/briarproject/android/SetupActivity.java
@@ -10,7 +10,6 @@ import android.text.TextWatcher;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.view.inputmethod.InputMethodManager;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ProgressBar;
@@ -43,14 +42,13 @@ import static android.view.View.GONE;
 import static android.view.View.INVISIBLE;
 import static android.view.View.VISIBLE;
 import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
-import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
 import static java.util.logging.Level.INFO;
 import static org.briarproject.android.TestingConstants.PREVENT_SCREENSHOTS;
 import static org.briarproject.api.crypto.PasswordStrengthEstimator.WEAK;
 import static org.briarproject.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
 
 public class SetupActivity extends BaseActivity implements OnClickListener,
-OnEditorActionListener {
+		OnEditorActionListener {
 
 	private static final Logger LOG =
 			Logger.getLogger(SetupActivity.class.getName());
@@ -82,11 +80,13 @@ OnEditorActionListener {
 
 		TextWatcher tw = new TextWatcher() {
 			@Override
-			public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+			public void beforeTextChanged(CharSequence s, int start, int count,
+					int after) {
 			}
 
 			@Override
-			public void onTextChanged(CharSequence s, int start, int before, int count) {
+			public void onTextChanged(CharSequence s, int start, int before,
+					int count) {
 				enableOrDisableContinueButton();
 			}
 
@@ -104,7 +104,7 @@ OnEditorActionListener {
 
 	private void enableOrDisableContinueButton() {
 		if (progress == null) return; // Not created yet
-		if (passwordEntry.getText().length() > 0)
+		if (passwordEntry.getText().length() > 0 && passwordEntry.hasFocus())
 			strengthMeter.setVisibility(VISIBLE);
 		else strengthMeter.setVisibility(INVISIBLE);
 		String nickname = nicknameEntry.getText().toString();
@@ -114,11 +114,14 @@ OnEditorActionListener {
 		boolean passwordsMatch = firstPassword.equals(secondPassword);
 		float strength = strengthEstimator.estimateStrength(firstPassword);
 		strengthMeter.setStrength(strength);
-		AndroidUtils.setError(nicknameEntryWrapper, getString(R.string.name_too_long),
+		AndroidUtils.setError(nicknameEntryWrapper,
+				getString(R.string.name_too_long),
 				nicknameLength > MAX_AUTHOR_NAME_LENGTH);
-		AndroidUtils.setError(passwordEntryWrapper, getString(R.string.password_too_weak),
+		AndroidUtils.setError(passwordEntryWrapper,
+				getString(R.string.password_too_weak),
 				firstPassword.length() > 0 && strength < WEAK);
-		AndroidUtils.setError(passwordConfirmationWrapper, getString(R.string.passwords_do_not_match),
+		AndroidUtils.setError(passwordConfirmationWrapper,
+				getString(R.string.passwords_do_not_match),
 				secondPassword.length() > 0 && !passwordsMatch);
 		createAccountButton.setEnabled(nicknameLength > 0
 				&& nicknameLength <= MAX_AUTHOR_NAME_LENGTH
@@ -126,9 +129,7 @@ OnEditorActionListener {
 	}
 
 	public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
-		// Hide the soft keyboard
-		Object o = getSystemService(INPUT_METHOD_SERVICE);
-		((InputMethodManager) o).toggleSoftInput(HIDE_IMPLICIT_ONLY, 0);
+		hideSoftKeyboard();
 		return true;
 	}