Я пытаюсь отобразить подсказку для счетчика после выбора значения или загрузки значения из API. Я использую пользовательский адаптер, поэтому, когда пользователь выбирает значение, я получаю выбранный элемент и преобразовываю его в пользовательский объект, чтобы оттуда я мог получить идентификатор выбранного элемента. Я довольно долго искал inte rnet и пробовал 5-6 разных библиотек, но столкнулся с одной и той же проблемой в каждой из них. Проблема в том, что когда данные, когда я устанавливаю высоту счетчика на «wrap_content», то после загрузки данных макет просто изменяется, значит выравнивание не правильное. Когда я устанавливаю высоту как 30-50dp, тогда он не показывает значение выделенного текста должным образом. Половина значения видима, а другая половина значения не видна. Значение это просто строка. Но когда я устанавливаю высоту равной 50-60 dp, тогда он правильно отображает значение и плавающую подсказку, но тогда вид макета очень странный, поскольку внутри моего макета есть несколько TextInputLayout. Библиотеки, которые я пробовал:
https://github.com/ganfra/MaterialSpinner
https://github.com/Chivorns/SmartMaterialSpinner
https://github.com/james602152002/FloatingLabelSpinner?utm_source=android-arsenal.com&utm_medium=referral&utm_campaign=6635
https://android-arsenal.com/details/1/5300
https://github.com/james602152002/FloatingLabelSpinner?utm_source=android-arsenal.com&utm_medium=referral&utm_campaign=6635
мой пользовательский адаптер:
public addServicesCatGroupSpinnerAdapter(Context context, List<groupsModel> models) {
this.models = models;
this.context = context;
}
@Override
public int getCount() {
return models.size();
}
@Override
public Object getItem(int position) {
return models.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = inflate(context, R.layout.add_cat_spinner_dropdown, null);
TextView tvID = view.findViewById(R.id.catID);
tvID.setText(models.get(position).getGroupID());
TextView tvName = view.findViewById(R.id.catName);
tvName.setText(models.get(position).getGroupName());
return view;
}
Пример кода, который я использую:
<com.james602152002.floatinglabelspinner.FloatingLabelSpinner
android:id="@+id/spinnerMinutes"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
app:j_fls_colorHighlight="@color/appTheme"
app:j_fls_textColorHint="@color/light_gray"
app:j_fls_colorError="@color/red_btn_bg_color"
app:j_fls_hint="Select Minutes"
app:j_fls_thickness="1dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
app:j_fls_label_textSize="15sp"
app:j_fls_hint_textSize="15sp"
app:j_fls_error_textSize="14sp"/>