Spinner android дополнительные пробелы - PullRequest
0 голосов
/ 19 февраля 2020

У меня проблема с использованием счетчика. Я добавил его в actionBar как меню. Выбранный элемент имеет размер, как у самого большого элемента:

Большой выбранный элемент:

Big item selected

Выбранный маленький элемент:

https://i.stack.imgur.com/dzoK1.png

Как удалить пробел между "It.2" и "стрелкой"?

actionbar_spinner_menu. xml:

<menu>
    <item
        android:id="@+id/spinner"
        android:title="actionbar_spinner"
        app:actionViewClass="android.widget.Spinner"
        app:showAsAction="always">
    </item>
</menu>

onCreateOptionsMenu в MainActivity:

getMenuInflater().inflate(R.menu.actionbar_spinner_menu, menu);
MenuItem item = menu.findItem(R.id.spinner);
Spinner spinner = (Spinner) item.getActionView();
spinner.setPopupBackgroundResource(R.color.white);
List<String> list = new ArrayList<>();
list.add("Very big item 1");
list.add("It. 2");
CategoryAdapter categoryAdapter = new CategoryAdapter(this, R.layout.spinner_menu, list);
spinner.setAdapter(categoryAdapter);
return true;

CategoryAdapter:

public class CategoryAdapter extends ArrayAdapter<String> {
    private List<String> listOfCategories;

    public CategoryAdapter(Context context, int resource, List<String> listOfCategories){
        super(context, resource, listOfCategories);
        this.listOfCategories = listOfCategories;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        return super.getView(position, convertView, parent);
    }

    @Override
    public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View item = convertView;
        if (item == null) {
            item = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.spinner_item, parent, false);
        }
        String category = listOfCategories.get(position);
        if (category != null){
            TextView tvCategory = item.findViewById(R.id.tv_spinner_category);
            tvCategory.setText(category);
        }
        return item;
    }
}

spinner_item. xml

<LinearLayout 
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tv_spinner_category"
        android:textColor="@color/action_bar"
        android:background="@color/white"
        android:textSize="@dimen/spinner_text_size"
        android:textStyle="bold"
        android:paddingTop="10dp"
        android:paddingBottom="5dp"
        android:paddingStart="7dp"
        android:paddingEnd="7dp"
        android:textAlignment="center"/>
</LinearLayout>

spinner_menu. xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@color/action_bar"
    style="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"
    android:textColor="@color/white"
    android:textIsSelectable="false"/>
...