Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom spinner inside ConstrainLayout not aligning right

Tags:

android

I have a custom spinner inside a ConstrainLayout, The spinner selected value is not aligning right. This works right when I display the spinner in a relative layout. I want to display it correctly in the constrainlayout

Expected Output (First item is the selected item) :

This is the expected result

activity.xml

<androidx.constraintlayout.widget.ConstraintLayout
    android:id="@+id/constrainLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <com.esri.arcgisruntime.mapping.view.MapView
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </com.esri.arcgisruntime.mapping.view.MapView>

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#00000000"
        android:overlapAnchor="false"
        android:popupBackground="#00000000"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

spinner_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>

<TextView
    android:id="@+id/txt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingTop="5dp"
    android:textColor="#FFF"
    android:textSize="20sp"
    android:gravity="right"
    android:textStyle="bold|normal"
    android:singleLine="true"
    android:layout_weight="0.9"/>

<ImageView
    android:id="@+id/img"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:layout_weight="0.1"
    android:contentDescription="@null"/>

UPDATE JAVA CODE:

    ArrayList<ItemData> list = new ArrayList<>();
    list.add(new ItemData("Stop", R.drawable.locationdisplaydisabled));
    list.add(new ItemData("On", R.drawable.locationdisplayon));
    list.add(new ItemData("Re-Center", R.drawable.locationdisplayrecenter));
    list.add(new ItemData("Navigation", R.drawable.locationdisplaynavigation));
    list.add(new ItemData("Compass", R.drawable.locationdisplayheading));
    SpinnerAdapter adapter = new SpinnerAdapter(this, R.layout.spinner_layout, R.id.txt, list);
    mSpinner.setAdapter(adapter);
    mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            switch (position) {
                case 0:
                    // Stop Location Display
                  
                    break;
                case 1:
                    // Start Location Display
                    break;
                case 2:
                    // Re-Center MapView on Location
                    break;
                case 3:
                    // Start Navigation Mode
                    break;
                case 4:
                    // Start Compass Mode
                    break;
            }
        }
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }

    });

}

Current Output

Current result

like image 509
Dioptre Pic Avatar asked Sep 02 '21 07:09

Dioptre Pic


People also ask

How to create custom spinner in Android Studio?

Step 1: Create a new project in Android Studio and name it CustomSpinnerExample. Select File -> New -> New Project. Fill the requirements and click "Finish" button. Step 2: Open res -> layout -> xml (or) activity_main.xml and add following code. Here we are creating Spinner inside Relative Layout.

How do I add a margin to a constraintlayout?

To cope with potential lack of margins in these cases, ConstraintLayout offers the app:layout_goneMargin [Left|Start|Top|Right|End|Bottom] which can be used to specify a margin on a view in the case the constraint is attached to a GONE view.

What is a constraintlayout?

In fact, one can think of a ConstraintLayout as a RelativeLayout on steroids; this is a good mental model to use to get acquainted to ConstraintLayout if you have experience using the “old-school” Android layouts.

What is constraint layout in Salesforce?

Constraint Layout is a ViewGroup (i.e. a view that holds other views) which allows you to create large and complex layouts with a flat view hierarchy, and also allows you to position and size widgets in a very flexible way. It was created to help reduce the nesting of views and also improve the performance of layout files.


1 Answers

app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintVertical_bias="1"

Try Adding these four lines to your spinner in XML.

like image 93
Real Tech Hacks Avatar answered Oct 07 '22 07:10

Real Tech Hacks