From 286c19ede535493024e38f373ef0e2099889def7 Mon Sep 17 00:00:00 2001 From: Sergej A Date: Mon, 8 Aug 2016 11:29:42 +0200 Subject: [PATCH] Some changes + Added new Layout (New Profile, Exercise Type) + Added Notifications(Vibrations + Permission, Screen stays on, show how much time is left,, trigger the alarm) --- app/src/main/AndroidManifest.xml | 4 +- .../BreakActivity.java | 94 +++++++-- .../BreakReminder.java | 191 +++++++++++++++--- .../ExerciseTypeActivity.java | 56 +++++ .../ProfileActivity.java | 76 +++++++ .../res/layout/content_break_reminder.xml | 10 +- app/src/main/res/layout/exercise_type.xml | 146 +++++++++++++ app/src/main/res/layout/new_profile.xml | 145 +++++++++++++ app/src/main/res/values/profiles.xml | 9 + build.gradle | 2 +- 10 files changed, 680 insertions(+), 53 deletions(-) create mode 100644 app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ExerciseTypeActivity.java create mode 100644 app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ProfileActivity.java create mode 100644 app/src/main/res/layout/exercise_type.xml create mode 100644 app/src/main/res/layout/new_profile.xml create mode 100644 app/src/main/res/values/profiles.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4f8c125..0de13de 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ - + + + \ No newline at end of file diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakActivity.java index 392583d..5dfdd2a 100644 --- a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakActivity.java +++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakActivity.java @@ -1,10 +1,20 @@ package orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder; +import android.app.Notification; +import android.app.NotificationManager; +import android.content.Context; import android.content.SharedPreferences; +import android.media.MediaPlayer; +import android.media.Ringtone; +import android.media.RingtoneManager; +import android.net.Uri; import android.os.CountDownTimer; +import android.os.Vibrator; import android.preference.PreferenceManager; +import android.support.v4.app.NotificationCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; @@ -24,29 +34,28 @@ public class BreakActivity extends AppCompatActivity implements View.OnClickList setContentView(R.layout.activity_break); - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); int mins = sharedPrefs.getInt("break_value", 5); String bufferZeroMinute = ""; - if(mins < 10) + if (mins < 10) bufferZeroMinute = "0"; - ct_text =(TextView)findViewById(R.id.textViewBreak); - ct_text.setText(bufferZeroMinute+mins+":00"); + ct_text = (TextView) findViewById(R.id.textViewBreak); + ct_text.setText(bufferZeroMinute + mins + ":00"); - Button playStopButton = (Button)findViewById(R.id.button_playStopBreak); + Button playStopButton = (Button) findViewById(R.id.button_playStopBreak); playStopButton.setOnClickListener(this); - Button resetButton = (Button)findViewById(R.id.button_cancel); + Button resetButton = (Button) findViewById(R.id.button_cancel); resetButton.setOnClickListener(this); ct_text.setOnClickListener(this); - LinearLayout ll = (LinearLayout)findViewById(R.id.layout_break); + LinearLayout ll = (LinearLayout) findViewById(R.id.layout_break); // TODO Do it dynamically - for (int i = 0; i < 20; i++){ + for (int i = 0; i < 20; i++) { ImageView image = new ImageView(this); - image.setLayoutParams(new android.view.ViewGroup.LayoutParams(80,60)); + image.setLayoutParams(new android.view.ViewGroup.LayoutParams(80, 60)); image.setImageResource(R.drawable.statistic_logo); ll.addView(image); } @@ -55,38 +64,38 @@ public class BreakActivity extends AppCompatActivity implements View.OnClickList } public void onClick(View v) { - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); + final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); int mins = sharedPrefs.getInt("break_value", 10); String bufferZeroMinute = ""; String bufferZeroSecond = ""; int time = mins * 60 * 1000; int oldTime = time; - if(stopTime == "" && !isRunning) { + if (stopTime == "" && !isRunning) { if (time / 1000 / 60 < 10) bufferZeroMinute = "0"; ct_text.setText(bufferZeroMinute + time / 1000 / 60 + ":00"); - } else if(!isRunning){ + } else if (!isRunning) { ct_text.setText(stopTime); - String stringTime = (String)ct_text.getText(); + String stringTime = (String) ct_text.getText(); String[] timef = stringTime.split(":"); int minute = Integer.parseInt(timef[0]); int second = Integer.parseInt(timef[1]); - System.out.println("Minute: "+ minute + " Second: "+second); - time = (1000 * (minute*60)) + (1000 * second); + System.out.println("Minute: " + minute + " Second: " + second); + time = (1000 * (minute * 60)) + (1000 * second); - if(minute < 10) + if (minute < 10) bufferZeroMinute = "0"; - if(second < 10) + if (second < 10) bufferZeroSecond = "0"; ct_text.setText(bufferZeroMinute + minute + ":" + bufferZeroSecond + second); + } - System.out.println(time +" "+ ct_text.getText()); - + System.out.println(time + " " + ct_text.getText()); switch (v.getId()) { @@ -99,6 +108,7 @@ public class BreakActivity extends AppCompatActivity implements View.OnClickList isRunning = false; } else { ct = new CountDownTimer(time, 1000) { + boolean timeLeft = false; public void onTick(long millisUntilFinished) { String bufferZeroMinute = ""; @@ -111,12 +121,56 @@ public class BreakActivity extends AppCompatActivity implements View.OnClickList bufferZeroSecond = "0"; ct_text.setText(bufferZeroMinute + (millisUntilFinished / 1000) / 60 + ":" + bufferZeroSecond + millisUntilFinished / 1000 % 60); + + //Show how much time is left + timeLeft = sharedPrefs.getBoolean("notifications_new_message_timeLeft", false); + if (timeLeft) { + Notification notification = new NotificationCompat.Builder(getApplicationContext()).setCategory(Notification.CATEGORY_MESSAGE) + .setSmallIcon(R.drawable.ic_notifications_black_24dp) + .setContentTitle("Break Activity Reminder: ") + .setContentText(((millisUntilFinished / 1000) / 60) + "Minutes and " + (millisUntilFinished / 1000 % 60) + " seconds") + .setAutoCancel(true) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC).build(); + NotificationManager notificationManager = + (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + notificationManager.notify(999, notification); + } } public void onFinish() { isRunning = false; ct_text.setText("00:00"); - //TODO trigger the alarm + //Trigger the alarm + String ringPref = sharedPrefs.getString("notifications_new_message_ringtone", ""); + System.out.println("Sound: " + ringPref); + if (!ringPref.equals("")) { + System.out.println("-----------------PLAY NOTIFICATION SOUND----------------"); + Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), Uri.parse(ringPref)); + r.play(); + } + + //FIXME Vibrate + boolean vibrateChecked = sharedPrefs.getBoolean("notifications_new_message_vibrate", false); + System.out.println("Vibrate is : " + vibrateChecked); + if (vibrateChecked) { + // Get instance of Vibrator from current Context + Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + + if (v == null) { + System.out.println("No vibrator! :D"); + } else { + // Vibrate for 3000 milliseconds + System.out.println("Vibrate for 3000 ms"); + v.vibrate(3000); + } + } + + //Cancel the notification + if (timeLeft) { + NotificationManager notificationManager = + (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + notificationManager.cancel(999); + } finish(); //startBreak(); } diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java index 8f10ff2..44cdb49 100644 --- a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java +++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/BreakReminder.java @@ -1,10 +1,24 @@ package orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.app.FragmentManager; +import android.app.Notification; +import android.app.NotificationManager; +import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.media.Ringtone; +import android.media.RingtoneManager; +import android.net.Uri; import android.os.Bundle; import android.os.CountDownTimer; +import android.os.Vibrator; +import android.preference.ListPreference; import android.preference.PreferenceManager; +import android.support.v4.app.NotificationCompat; import android.view.View; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; @@ -14,11 +28,15 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; +import android.view.WindowManager; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.Spinner; import android.widget.TextView; public class BreakReminder extends AppCompatActivity - implements NavigationView.OnNavigationItemSelectedListener, View.OnClickListener{ + implements NavigationView.OnNavigationItemSelectedListener, View.OnClickListener { private boolean isRunning = false; private TextView ct_text; @@ -44,21 +62,54 @@ public class BreakReminder extends AppCompatActivity navigationView.setNavigationItemSelectedListener(this); SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); + + // If chosen, set screen to "stay on" + boolean stayOn = sharedPrefs.getBoolean("notifications_stayOn", false); + if(stayOn) + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + int mins = sharedPrefs.getInt("work_value", 50); String bufferZeroMinute = ""; - if(mins < 10) + if (mins < 10) bufferZeroMinute = "0"; - ct_text =(TextView)findViewById(R.id.textView); - ct_text.setText(bufferZeroMinute+mins+":00"); + ct_text = (TextView) findViewById(R.id.textView); + ct_text.setText(bufferZeroMinute + mins + ":00"); - Button playStopButton = (Button)findViewById(R.id.button_playStop); + Button playStopButton = (Button) findViewById(R.id.button_playStop); playStopButton.setOnClickListener(this); - Button resetButton = (Button)findViewById(R.id.button_reset); + Button resetButton = (Button) findViewById(R.id.button_reset); resetButton.setOnClickListener(this); ct_text.setOnClickListener(this); + Button profileButton = (Button) findViewById(R.id.button_profile); + profileButton.setOnClickListener(this); + + Spinner profileSpinner = (Spinner) findViewById(R.id.spinner); + String[] some_array = getResources().getStringArray(R.array.profile_entries); + ArrayAdapter adapter = new + ArrayAdapter(this, android.R.layout.simple_spinner_item, some_array); + profileSpinner.setAdapter(adapter); + + //Set the ClickListener for Spinner + profileSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { + + public void onItemSelected(AdapterView parent, View view, int position, long id) { + System.out.println("Selected item: " + parent.getItemAtPosition(position) + " with id: " + id); + //TODO Match the work and break value to the assigned profile + switch ((String) parent.getItemAtPosition(position)){ + case "New Profile": + createNewProfile(); + break; + + } + } + + public void onNothingSelected(AdapterView parent) { + + } + }); } @Override @@ -117,7 +168,7 @@ public class BreakReminder extends AppCompatActivity } public void onClick(View v) { - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); + final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); int mins = sharedPrefs.getInt("work_value", 50); String bufferZeroMinute = ""; String bufferZeroSecond = ""; @@ -125,62 +176,118 @@ public class BreakReminder extends AppCompatActivity time = 5000; int oldTime = time; - if(stopTime == "" && !isRunning) { + if (stopTime == "" && !isRunning) { if (time / 1000 / 60 < 10) bufferZeroMinute = "0"; ct_text.setText(bufferZeroMinute + time / 1000 / 60 + ":00"); - } else if(!isRunning){ + } else if (!isRunning) { ct_text.setText(stopTime); - String stringTime = (String)ct_text.getText(); + String stringTime = (String) ct_text.getText(); String[] timef = stringTime.split(":"); int minute = Integer.parseInt(timef[0]); int second = Integer.parseInt(timef[1]); - System.out.println("Minute: "+ minute + " Second: "+second); - time = (1000 * (minute*60)) + (1000 * second); + System.out.println("Minute: " + minute + " Second: " + second); + time = (1000 * (minute * 60)) + (1000 * second); - if(minute < 10) + if (minute < 10) bufferZeroMinute = "0"; - if(second < 10) + if (second < 10) bufferZeroSecond = "0"; ct_text.setText(bufferZeroMinute + minute + ":" + bufferZeroSecond + second); } - System.out.println(time +" "+ ct_text.getText()); - + System.out.println(time + " " + ct_text.getText()); switch (v.getId()) { - case R.id.textView: - case R.id.button_playStop: - if (isRunning){ + //FIXME + case R.id.button_profile: + FragmentManager fm = getFragmentManager(); + ProfileDialog pd = new ProfileDialog(); + pd.show(fm, "Profile Dialog"); + + //createNewProfile(); + break; + + case R.id.textView: + case R.id.button_playStop: + if (isRunning) { ct.cancel(); - stopTime = (String)ct_text.getText(); + stopTime = (String) ct_text.getText(); isRunning = false; - }else{ + } else { ct = new CountDownTimer(time, 1000) { + boolean timeLeft = false; public void onTick(long millisUntilFinished) { String bufferZeroMinute = ""; String bufferZeroSecond = ""; - if ((millisUntilFinished / 1000)/60 < 10) + if ((millisUntilFinished / 1000) / 60 < 10) bufferZeroMinute = "0"; if (millisUntilFinished / 1000 % 60 < 10) bufferZeroSecond = "0"; - ct_text.setText(bufferZeroMinute+(millisUntilFinished / 1000)/60 + ":" + bufferZeroSecond + millisUntilFinished / 1000 % 60); + ct_text.setText(bufferZeroMinute + (millisUntilFinished / 1000) / 60 + ":" + bufferZeroSecond + millisUntilFinished / 1000 % 60); + + //Show how much time is left + //String timeLeft = bufferZeroMinute + (millisUntilFinished / 1000) / 60 + ":" + bufferZeroSecond + millisUntilFinished / 1000 % 60; + //System.out.println("Time left: " + timeLeft); + timeLeft = sharedPrefs.getBoolean("notifications_new_message_timeLeft", false); + if (timeLeft) { + Notification notification = new NotificationCompat.Builder(getApplicationContext()).setCategory(Notification.CATEGORY_MESSAGE) + .setSmallIcon(R.drawable.ic_notifications_black_24dp) + .setContentTitle("Break Reminder: ") + .setContentText("Take a break in " + ((millisUntilFinished / 1000) / 60) + " minutes and " + ((millisUntilFinished / 1000) % 60) + " seconds") + .setAutoCancel(true) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC).build(); + NotificationManager notificationManager = + (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + notificationManager.notify(1000, notification); + } } public void onFinish() { isRunning = false; ct_text.setText("00:00"); - //TODO trigger the alarm + //trigger the alarm + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + String ringPref = sharedPrefs.getString("notifications_new_message_ringtone", ""); + System.out.println("Sound: " + ringPref); + if (!ringPref.equals("")) { + System.out.println("-----------------PLAY NOTIFICATION SOUND----------------"); + // Get the current ringtone + Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), Uri.parse(ringPref)); + // Play ringtone + r.play(); + } + //FIXME Vibrate + boolean vibrateChecked = sharedPrefs.getBoolean("notifications_new_message_vibrate", false); + System.out.println("Vibrate is : " + vibrateChecked); + if (vibrateChecked) { + // Get instance of Vibrator from current Context + Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + + if (v == null) { + System.out.println("No vibrator! :D"); + } else { + // Vibrate for 3000 milliseconds + System.out.println("Vibrate for 3000 ms"); + v.vibrate(3000); + } + } + + //Cancel the notification + if (timeLeft) { + NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + notificationManager.cancel(1000); + } startBreak(); } }.start(); @@ -193,17 +300,22 @@ public class BreakReminder extends AppCompatActivity if (ct != null) ct.cancel(); - if(oldTime/1000/60 < 10) + if (oldTime / 1000 / 60 < 10) bufferZeroMinute = "0"; - ct_text.setText(bufferZeroMinute + oldTime/1000/60+":00"); - stopTime = oldTime/1000/60+":00"; + ct_text.setText(bufferZeroMinute + oldTime / 1000 / 60 + ":00"); + stopTime = oldTime / 1000 / 60 + ":00"; isRunning = false; break; } } - public void startBreak(){ + private void createNewProfile() { + Intent intent = new Intent(this, ProfileActivity.class); + this.startActivity(intent); + } + + public void startBreak() { Intent intent = new Intent(this, BreakDeciderActivity.class); this.startActivity(intent); @@ -212,9 +324,28 @@ public class BreakReminder extends AppCompatActivity String bufferZeroMinute = ""; int time = mins * 60 * 1000; - if(time/1000/60 < 10) + if (time / 1000 / 60 < 10) bufferZeroMinute = "0"; - ct_text.setText(bufferZeroMinute + time/1000/60+":00"); + ct_text.setText(bufferZeroMinute + time / 1000 / 60 + ":00"); } + + + public static class ProfileDialog extends DialogFragment { + + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + + builder.setTitle("") + .setItems(R.array.profile_entries, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + // The 'which' argument contains the index position + // of the selected item + + } + }); + return builder.create(); + } + } + } diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ExerciseTypeActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ExerciseTypeActivity.java new file mode 100644 index 0000000..77410b5 --- /dev/null +++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ExerciseTypeActivity.java @@ -0,0 +1,56 @@ +package orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder; + + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.Button; + +public class ExerciseTypeActivity extends AppCompatActivity implements View.OnClickListener { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.exercise_type); + + Button addButton = (Button) findViewById(R.id.button_et_add); + addButton.setOnClickListener(this); + + Button editButton = (Button) findViewById(R.id.button_et_edit); + editButton.setOnClickListener(this); + + Button saveButton = (Button) findViewById(R.id.button_et_save); + saveButton.setOnClickListener(this); + + Button cancelButton = (Button) findViewById(R.id.button_et_cancel); + cancelButton.setOnClickListener(this); + + + } + + @Override + public void onClick(View v) { + //TODO + switch (v.getId()) { + case R.id.button_et_add: + System.out.println("Add new Exercise Type!"); + + break; + + case R.id.button_et_edit: + System.out.println("Edit new Exercise Type!"); + + break; + + case R.id.button_et_save: + System.out.println("Save new Exercise Type!"); + + break; + + case R.id.button_et_cancel: + System.out.println("Cancel!"); + finish(); + break; + } + } +} diff --git a/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ProfileActivity.java b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ProfileActivity.java new file mode 100644 index 0000000..6520f34 --- /dev/null +++ b/app/src/main/java/orgprivacy_friendly_apps/secuso/privacyfriendlybreakreminder/ProfileActivity.java @@ -0,0 +1,76 @@ +package orgprivacy_friendly_apps.secuso.privacyfriendlybreakreminder; + + +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.PreferenceFragment; +import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Spinner; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class ProfileActivity extends AppCompatActivity implements View.OnClickListener { + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.new_profile); + + Button cancelButton = (Button) findViewById(R.id.button_profile_cancel); + cancelButton.setOnClickListener(this); + + Button saveButton = (Button) findViewById(R.id.button_profile_save); + saveButton.setOnClickListener(this); + + Button selectButton = (Button) findViewById(R.id.button_profile_select); + selectButton.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.button_profile_save: + //Fixme Add new Profile to the Array of Profiles (doesn´t work with xml because it is not possible to add values dynamically to any part of resources) + System.out.println("Save new profile!"); +// Spinner profileSpinner = (Spinner) findViewById(R.id.spinner); +// String[] array = getResources().getStringArray(R.array.profile_entries); +// List stringList = new ArrayList(Arrays.asList(array)); +// EditText profileName = +// (EditText) findViewById(R.id.editProfileName); +// stringList.add(4, profileName.getText().toString()); +// ArrayAdapter adapter = new +// ArrayAdapter(this, android.R.layout.simple_spinner_item, stringList); +// profileSpinner.setAdapter(adapter); + + finish(); + break; + + case R.id.button_profile_cancel: + System.out.println("New profile canceled!"); + finish(); + break; + + case R.id.button_profile_select: + System.out.println("Select Exercise Type!"); + createExerciseType(); + break; + } + } + + + private void createExerciseType() { + Intent intent = new Intent(this, ExerciseTypeActivity.class); + this.startActivity(intent); + System.out.println("Exercise Type Activity!"); + } +} diff --git a/app/src/main/res/layout/content_break_reminder.xml b/app/src/main/res/layout/content_break_reminder.xml index cac4f0b..5ef7445 100644 --- a/app/src/main/res/layout/content_break_reminder.xml +++ b/app/src/main/res/layout/content_break_reminder.xml @@ -18,7 +18,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/spinner" - android:spinnerMode="dropdown" + android:spinnerMode="dialog" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_centerHorizontal="true" @@ -60,6 +60,14 @@ android:layout_above="@+id/button_playStop" android:layout_centerHorizontal="true" /> +