Loading app/src/main/java/app/fedilab/android/BaseMainActivity.java +3 −4 Original line number Diff line number Diff line Loading @@ -516,6 +516,9 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } else if (id == R.id.nav_cache) { Intent intent = new Intent(BaseMainActivity.this, CacheActivity.class); startActivity(intent); } else if (id == R.id.nav_about_instance) { Intent intent = new Intent(BaseMainActivity.this, InstanceActivity.class); startActivity(intent); } binding.drawerLayout.close(); return false; Loading Loading @@ -677,10 +680,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt AlertDialog alert = alt_bld.create(); alert.show(); return true; } else if (itemId == R.id.action_about_instance) { Intent intent = new Intent(BaseMainActivity.this, InstanceActivity.class); startActivity(intent); return true; } else if (itemId == R.id.action_proxy) { Intent intent = new Intent(BaseMainActivity.this, ProxyActivity.class); startActivity(intent); Loading app/src/main/java/app/fedilab/android/activities/InstanceActivity.java +57 −30 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package app.fedilab.android.activities; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Bundle; Loading @@ -23,9 +24,9 @@ import android.text.Html; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import androidx.lifecycle.ViewModelProvider; import androidx.preference.PreferenceManager; import com.bumptech.glide.Glide; Loading @@ -35,13 +36,13 @@ import app.fedilab.android.client.entities.api.Instance; import app.fedilab.android.databinding.ActivityInstanceBinding; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.viewmodel.mastodon.InstancesVM; import es.dmoral.toasty.Toasty; public class InstanceActivity extends BaseActivity { ActivityInstanceBinding binding; private boolean applyMaxChar = false; @Override protected void onCreate(Bundle savedInstanceState) { Loading @@ -54,8 +55,26 @@ public class InstanceActivity extends BaseActivity { getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); if (getSupportActionBar() != null) getSupportActionBar().hide(); SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(InstanceActivity.this); binding.close.setOnClickListener( view -> { if (applyMaxChar) { String max_char = binding.maxChar.getText().toString(); SharedPreferences.Editor editor = sharedpreferences.edit(); if (!max_char.isEmpty()) { try { editor.putInt(getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, Integer.parseInt(max_char)); editor.apply(); } catch (Exception ignored) { } } } finish(); } binding.close.setOnClickListener(view -> finish()); ); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); Loading @@ -66,10 +85,17 @@ public class InstanceActivity extends BaseActivity { instancesVM.getInstance(BaseMainActivity.currentInstance).observe(InstanceActivity.this, instanceInfo -> { binding.instanceContainer.setVisibility(View.VISIBLE); binding.loader.setVisibility(View.GONE); if (instanceInfo == null || instanceInfo.info == null) { Toasty.error(InstanceActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show(); return; if (instanceInfo == null || instanceInfo.info == null || instanceInfo.info.description == null) { binding.maxCharContainer.setVisibility(View.VISIBLE); binding.instanceContainer.setVisibility(View.GONE); int val = sharedpreferences.getInt(getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, -1); if (val != -1) { binding.maxChar.setText(String.valueOf(val)); } applyMaxChar = true; } else { Instance instance = instanceInfo.info; binding.instanceTitle.setText(instance.title); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) Loading @@ -93,6 +119,7 @@ public class InstanceActivity extends BaseActivity { emailIntent.putExtra(Intent.EXTRA_SUBJECT, "[Mastodon] - " + instance.uri); startActivity(Intent.createChooser(emailIntent, getString(R.string.send_email))); }); } }); } Loading app/src/main/java/app/fedilab/android/helper/MastodonHelper.java +18 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ package app.fedilab.android.helper; * see <http://www.gnu.org/licenses>. */ import static app.fedilab.android.BaseMainActivity.instanceInfo; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; Loading Loading @@ -51,6 +53,7 @@ import java.util.regex.Pattern; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.entities.api.Account; import app.fedilab.android.client.entities.api.Pagination; import app.fedilab.android.client.entities.api.RelationShip; Loading Loading @@ -499,4 +502,19 @@ public class MastodonHelper { void onTimedMute(RelationShip relationShip); } public static int getInstanceMaxChars(Context context) { int max_car; if (instanceInfo != null) { max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters; } else { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); int val = sharedpreferences.getInt(context.getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, -1); if (val != -1) { return val; } else { max_car = 500; } } return max_car; } } app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java +2 −7 Original line number Diff line number Diff line Loading @@ -712,12 +712,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder public void afterTextChanged(Editable s) { int currentLength = MastodonHelper.countLength(holder); //Copy/past int max_car; if (instanceInfo != null) { max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters; } else { max_car = 500; } int max_car = MastodonHelper.getInstanceMaxChars(context); if (currentLength > max_car + 1) { int from = max_car - holder.binding.contentSpoiler.getText().length(); int to = (currentLength - holder.binding.contentSpoiler.getText().length()); Loading Loading @@ -1246,7 +1241,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder if (instanceInfo == null) { return; } int max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters; int max_car = MastodonHelper.getInstanceMaxChars(context); holder.binding.characterProgress.setMax(max_car); holder.binding.contentSpoiler.addTextChangedListener(new TextWatcher() { private int cPosition; Loading app/src/main/res/layout/activity_instance.xml +58 −15 Original line number Diff line number Diff line Loading @@ -16,10 +16,11 @@ --> <ScrollView 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="350dp"> android:layout_height="wrap_content"> <RelativeLayout <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/fab_margin" Loading @@ -28,25 +29,31 @@ <RelativeLayout android:layout_width="match_parent" android:layout_height="300dp" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" android:alpha="0.2"> <ImageView android:id="@+id/back_ground_image" android:layout_width="match_parent" android:layout_height="300dp" android:layout_height="match_parent" android:contentDescription="@string/logo_of_the_instance" android:scaleType="centerCrop" /> android:scaleType="centerCrop" tools:src="@tools:sample/backgrounds/scenic" /> </RelativeLayout> <LinearLayout <androidx.appcompat.widget.LinearLayoutCompat android:layout_height="wrap_content" android:id="@+id/instance_container" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="20dp" android:orientation="vertical"> <!-- Instance title --> <TextView <androidx.appcompat.widget.AppCompatTextView android:id="@+id/instance_title" android:layout_width="match_parent" android:layout_height="wrap_content" Loading @@ -55,7 +62,7 @@ android:textSize="20sp" /> <!-- Instance description --> <TextView <androidx.appcompat.widget.AppCompatTextView android:id="@+id/instance_description" android:layout_width="match_parent" android:layout_height="wrap_content" Loading @@ -64,7 +71,7 @@ android:gravity="center_horizontal" android:textSize="16sp" /> <LinearLayout <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" Loading @@ -72,7 +79,7 @@ android:gravity="center" android:orientation="horizontal"> <!-- Instance version --> <TextView <androidx.appcompat.widget.AppCompatTextView android:id="@+id/instance_version" android:layout_width="wrap_content" android:layout_height="wrap_content" Loading @@ -80,7 +87,7 @@ android:textSize="14sp" android:textStyle="italic" /> <!-- Instance URI --> <TextView <androidx.appcompat.widget.AppCompatTextView android:id="@+id/instance_uri" android:layout_width="wrap_content" android:layout_height="wrap_content" Loading @@ -88,7 +95,7 @@ android:gravity="center_horizontal" android:textSize="14sp" android:textStyle="italic" /> </LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/instance_contact" Loading @@ -99,13 +106,45 @@ android:contentDescription="@string/contact_instance_admin" android:src="@drawable/ic_baseline_mail_outline_24" app:backgroundTint="@color/cyanea_accent_dark_reference" /> </LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/max_char_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:visibility="gone" app:layout_constraintTop_toBottomOf="@+id/instance_container" tools:visibility="visible"> <androidx.appcompat.widget.AppCompatTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/set_your_max_char_count" android:textSize="18sp" /> <androidx.appcompat.widget.AppCompatEditText android:id="@+id/max_char" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:hint="500" android:inputType="number" android:textSize="18sp" tools:ignore="HardcodedText" /> </androidx.appcompat.widget.LinearLayoutCompat> <!-- Main Loader --> <RelativeLayout android:id="@+id/loader" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" tools:visibility="visible" android:visibility="gone"> <ProgressBar Loading @@ -115,6 +154,10 @@ </RelativeLayout> <androidx.appcompat.widget.AppCompatButton app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/max_char_container" android:id="@+id/close" style="@style/Widget.AppCompat.Button.Colored" android:layout_width="wrap_content" Loading @@ -127,5 +170,5 @@ android:textAllCaps="false" android:textColor="@color/white" android:textSize="16sp" /> </RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout> </ScrollView> No newline at end of file Loading
app/src/main/java/app/fedilab/android/BaseMainActivity.java +3 −4 Original line number Diff line number Diff line Loading @@ -516,6 +516,9 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } else if (id == R.id.nav_cache) { Intent intent = new Intent(BaseMainActivity.this, CacheActivity.class); startActivity(intent); } else if (id == R.id.nav_about_instance) { Intent intent = new Intent(BaseMainActivity.this, InstanceActivity.class); startActivity(intent); } binding.drawerLayout.close(); return false; Loading Loading @@ -677,10 +680,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt AlertDialog alert = alt_bld.create(); alert.show(); return true; } else if (itemId == R.id.action_about_instance) { Intent intent = new Intent(BaseMainActivity.this, InstanceActivity.class); startActivity(intent); return true; } else if (itemId == R.id.action_proxy) { Intent intent = new Intent(BaseMainActivity.this, ProxyActivity.class); startActivity(intent); Loading
app/src/main/java/app/fedilab/android/activities/InstanceActivity.java +57 −30 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package app.fedilab.android.activities; import android.content.Intent; import android.content.SharedPreferences; import android.net.Uri; import android.os.Build; import android.os.Bundle; Loading @@ -23,9 +24,9 @@ import android.text.Html; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import androidx.lifecycle.ViewModelProvider; import androidx.preference.PreferenceManager; import com.bumptech.glide.Glide; Loading @@ -35,13 +36,13 @@ import app.fedilab.android.client.entities.api.Instance; import app.fedilab.android.databinding.ActivityInstanceBinding; import app.fedilab.android.helper.ThemeHelper; import app.fedilab.android.viewmodel.mastodon.InstancesVM; import es.dmoral.toasty.Toasty; public class InstanceActivity extends BaseActivity { ActivityInstanceBinding binding; private boolean applyMaxChar = false; @Override protected void onCreate(Bundle savedInstanceState) { Loading @@ -54,8 +55,26 @@ public class InstanceActivity extends BaseActivity { getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); if (getSupportActionBar() != null) getSupportActionBar().hide(); SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(InstanceActivity.this); binding.close.setOnClickListener( view -> { if (applyMaxChar) { String max_char = binding.maxChar.getText().toString(); SharedPreferences.Editor editor = sharedpreferences.edit(); if (!max_char.isEmpty()) { try { editor.putInt(getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, Integer.parseInt(max_char)); editor.apply(); } catch (Exception ignored) { } } } finish(); } binding.close.setOnClickListener(view -> finish()); ); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); Loading @@ -66,10 +85,17 @@ public class InstanceActivity extends BaseActivity { instancesVM.getInstance(BaseMainActivity.currentInstance).observe(InstanceActivity.this, instanceInfo -> { binding.instanceContainer.setVisibility(View.VISIBLE); binding.loader.setVisibility(View.GONE); if (instanceInfo == null || instanceInfo.info == null) { Toasty.error(InstanceActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show(); return; if (instanceInfo == null || instanceInfo.info == null || instanceInfo.info.description == null) { binding.maxCharContainer.setVisibility(View.VISIBLE); binding.instanceContainer.setVisibility(View.GONE); int val = sharedpreferences.getInt(getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, -1); if (val != -1) { binding.maxChar.setText(String.valueOf(val)); } applyMaxChar = true; } else { Instance instance = instanceInfo.info; binding.instanceTitle.setText(instance.title); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) Loading @@ -93,6 +119,7 @@ public class InstanceActivity extends BaseActivity { emailIntent.putExtra(Intent.EXTRA_SUBJECT, "[Mastodon] - " + instance.uri); startActivity(Intent.createChooser(emailIntent, getString(R.string.send_email))); }); } }); } Loading
app/src/main/java/app/fedilab/android/helper/MastodonHelper.java +18 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,8 @@ package app.fedilab.android.helper; * see <http://www.gnu.org/licenses>. */ import static app.fedilab.android.BaseMainActivity.instanceInfo; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; Loading Loading @@ -51,6 +53,7 @@ import java.util.regex.Pattern; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.entities.api.Account; import app.fedilab.android.client.entities.api.Pagination; import app.fedilab.android.client.entities.api.RelationShip; Loading Loading @@ -499,4 +502,19 @@ public class MastodonHelper { void onTimedMute(RelationShip relationShip); } public static int getInstanceMaxChars(Context context) { int max_car; if (instanceInfo != null) { max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters; } else { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); int val = sharedpreferences.getInt(context.getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, -1); if (val != -1) { return val; } else { max_car = 500; } } return max_car; } }
app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java +2 −7 Original line number Diff line number Diff line Loading @@ -712,12 +712,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder public void afterTextChanged(Editable s) { int currentLength = MastodonHelper.countLength(holder); //Copy/past int max_car; if (instanceInfo != null) { max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters; } else { max_car = 500; } int max_car = MastodonHelper.getInstanceMaxChars(context); if (currentLength > max_car + 1) { int from = max_car - holder.binding.contentSpoiler.getText().length(); int to = (currentLength - holder.binding.contentSpoiler.getText().length()); Loading Loading @@ -1246,7 +1241,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder if (instanceInfo == null) { return; } int max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters; int max_car = MastodonHelper.getInstanceMaxChars(context); holder.binding.characterProgress.setMax(max_car); holder.binding.contentSpoiler.addTextChangedListener(new TextWatcher() { private int cPosition; Loading
app/src/main/res/layout/activity_instance.xml +58 −15 Original line number Diff line number Diff line Loading @@ -16,10 +16,11 @@ --> <ScrollView 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="350dp"> android:layout_height="wrap_content"> <RelativeLayout <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="@dimen/fab_margin" Loading @@ -28,25 +29,31 @@ <RelativeLayout android:layout_width="match_parent" android:layout_height="300dp" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" android:alpha="0.2"> <ImageView android:id="@+id/back_ground_image" android:layout_width="match_parent" android:layout_height="300dp" android:layout_height="match_parent" android:contentDescription="@string/logo_of_the_instance" android:scaleType="centerCrop" /> android:scaleType="centerCrop" tools:src="@tools:sample/backgrounds/scenic" /> </RelativeLayout> <LinearLayout <androidx.appcompat.widget.LinearLayoutCompat android:layout_height="wrap_content" android:id="@+id/instance_container" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="20dp" android:orientation="vertical"> <!-- Instance title --> <TextView <androidx.appcompat.widget.AppCompatTextView android:id="@+id/instance_title" android:layout_width="match_parent" android:layout_height="wrap_content" Loading @@ -55,7 +62,7 @@ android:textSize="20sp" /> <!-- Instance description --> <TextView <androidx.appcompat.widget.AppCompatTextView android:id="@+id/instance_description" android:layout_width="match_parent" android:layout_height="wrap_content" Loading @@ -64,7 +71,7 @@ android:gravity="center_horizontal" android:textSize="16sp" /> <LinearLayout <androidx.appcompat.widget.LinearLayoutCompat android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" Loading @@ -72,7 +79,7 @@ android:gravity="center" android:orientation="horizontal"> <!-- Instance version --> <TextView <androidx.appcompat.widget.AppCompatTextView android:id="@+id/instance_version" android:layout_width="wrap_content" android:layout_height="wrap_content" Loading @@ -80,7 +87,7 @@ android:textSize="14sp" android:textStyle="italic" /> <!-- Instance URI --> <TextView <androidx.appcompat.widget.AppCompatTextView android:id="@+id/instance_uri" android:layout_width="wrap_content" android:layout_height="wrap_content" Loading @@ -88,7 +95,7 @@ android:gravity="center_horizontal" android:textSize="14sp" android:textStyle="italic" /> </LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/instance_contact" Loading @@ -99,13 +106,45 @@ android:contentDescription="@string/contact_instance_admin" android:src="@drawable/ic_baseline_mail_outline_24" app:backgroundTint="@color/cyanea_accent_dark_reference" /> </LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat> <androidx.appcompat.widget.LinearLayoutCompat android:id="@+id/max_char_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:visibility="gone" app:layout_constraintTop_toBottomOf="@+id/instance_container" tools:visibility="visible"> <androidx.appcompat.widget.AppCompatTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/set_your_max_char_count" android:textSize="18sp" /> <androidx.appcompat.widget.AppCompatEditText android:id="@+id/max_char" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:hint="500" android:inputType="number" android:textSize="18sp" tools:ignore="HardcodedText" /> </androidx.appcompat.widget.LinearLayoutCompat> <!-- Main Loader --> <RelativeLayout android:id="@+id/loader" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" tools:visibility="visible" android:visibility="gone"> <ProgressBar Loading @@ -115,6 +154,10 @@ </RelativeLayout> <androidx.appcompat.widget.AppCompatButton app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/max_char_container" android:id="@+id/close" style="@style/Widget.AppCompat.Button.Colored" android:layout_width="wrap_content" Loading @@ -127,5 +170,5 @@ android:textAllCaps="false" android:textColor="@color/white" android:textSize="16sp" /> </RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout> </ScrollView> No newline at end of file