I display the AlertDialog in custom position with a custom layout.
When I display my alert dialog I am getting more white space on the right side of the view even though my custom layout does not have that white space.
I follow this link did not get much help
Please check the attached image for details
Here is my custom_obstacle_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:padding="10dp"
android:weightSum="3"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatToggleButton
android:id="@+id/one"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="15dp"
android:layout_weight="1"
android:background="@drawable/toggle"
android:checked="true"
android:textOff="Camera"
android:textOn="Camera" />
<androidx.appcompat.widget.AppCompatToggleButton
android:id="@+id/two"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="15dp"
android:layout_marginEnd="15dp"
android:layout_marginBottom="15dp"
android:layout_weight="1"
android:background="@drawable/toggle"
android:checked="true"
android:textOff="Lidar"
android:textOn="Lidar" />
<androidx.appcompat.widget.AppCompatToggleButton
android:id="@+id/three"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginTop="15dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="15dp"
android:layout_weight="1"
android:background="@drawable/toggle"
android:checked="true"
android:textOff="Sonar"
android:textOn="Sonar" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Here is my Alert Dialog
final AlertDialog.Builder obstacleDialogBuilder = new AlertDialog.Builder(this, R.style.CustomDialog);
obstacleDialogBuilder.setMessage(null);
LayoutInflater inflaterObstacle = this.getLayoutInflater();
View obstacleDialogView = inflaterObstacle.inflate(R.layout.custom_obstacle_dialog, null);
obstacleDialogBuilder.setView(obstacleDialogView);
cameraButton = (ToggleButton) obstacleDialogView.findViewById(R.id.one);
lidarButton = (ToggleButton) obstacleDialogView.findViewById(R.id.two);
sonarButton = (ToggleButton) obstacleDialogView.findViewById(R.id.three);
SharedPreferences app_resources = getApplicationContext().getSharedPreferences("App_Resources", MODE_PRIVATE);
boolean obsCamera = app_resources.getBoolean("ObsCamera", true);
boolean obsLidar = app_resources.getBoolean("ObsLidar", true);
boolean obsSonar = app_resources.getBoolean("ObsSonar", true);
cameraButton.setChecked(obsCamera);
lidarButton.setChecked(obsLidar);
sonarButton.setChecked(obsSonar);
if (obsSonar && ultrasonicStatus)
sonarButton.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.red_rounded_button));
if (obsLidar && lidarStatus)
lidarButton.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.red_rounded_button));
if (obsCamera && cameraStatus)
cameraButton.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.red_rounded_button));
cameraButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor editor = getApplicationContext().getSharedPreferences("App_Resources", MODE_PRIVATE).edit();
editor.putBoolean("ObsCamera", isChecked);
editor.apply();
obstacleDetection.cameraDetectioin(isChecked);
}
});
lidarButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor editor = getApplicationContext().getSharedPreferences("App_Resources", MODE_PRIVATE).edit();
editor.putBoolean("ObsLidar", isChecked);
editor.apply();
obstacleDetection.lidarDetectioin(isChecked);
}
});
sonarButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
SharedPreferences.Editor editor = getApplicationContext().getSharedPreferences("App_Resources", MODE_PRIVATE).edit();
editor.putBoolean("ObsSonar", isChecked);
editor.apply();
obstacleDetection.ultrasonicDetectioin(isChecked);
}
});
obstacleAlertDialog = obstacleDialogBuilder.create();
obstacleAlertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
obstacleAlertDialog.getWindow().getAttributes().windowAnimations = R.style.SlideUpDownAnimation;
WindowManager.LayoutParams wmlp = obstacleAlertDialog.getWindow().getAttributes();
wmlp.gravity = Gravity.TOP | Gravity.RIGHT;
wmlp.x = 100; //x position
wmlp.y = 100; //y position
obstacleAlertDialog.show();
Here is the style I am using
<style name="CustomDialog" parent="Theme.AppCompat.Light.Dialog.Alert">>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<!-- <item name="android:windowBackground">@null</item>-->
<item name="android:windowNoTitle">true</item>
</style>
If you need more information please feel free to ask.
Thank You