android spinner 当前选中项如何右对齐?

image.png

android spinner 当前选中项如何右对齐?我的代码如下:

 <Spinner
    android:id="@+id/houseSituation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:listitem="@android:layout/simple_spinner_item"
    tools:itemCount="3"
/>
@Getter
@Setter
public class KeyValueSpinnerAdapter extends ArrayAdapter<KeyValueSpinnerAdapter.Item> {

    private final Spinner spinner;

    @Data
    @Accessors(chain = true)
    public static class Item {
        // ...
    }

    public KeyValueSpinnerAdapter(Context context, Spinner spinner, List<Item> items) {
        super(context, android.R.layout.simple_spinner_item, items);
        this.items = items;
        this.spinner = spinner;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        TextView textView = (TextView) super.getView(position, convertView, parent);
        Item item = this.items.get(position);
        textView.setText(item.getName());
        return textView;
    }
}
阅读 1.1k
avatarAI BotBETA
Spinner 的对齐问题通常可以通过自定义 Adapter 和布局来解决。以下是一个示例:

在 XML 布局中,Spinner 使用 android.R.layout.simple_spinner_item 作为项目布局。这是一个内部 Android 布局,我们无法修改它。但是,我们可以创建自己的自定义布局。例如:

<Spinner

android:id="@+id/houseSituation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:popupBackground="@color/white"
android:spinnerMode="dropdown" />
然后在 Java 代码中,我们创建自定义的 ArrayAdapter:

public class CustomSpinnerAdapter extends ArrayAdapter<String> {

private final Context context;
private final int resource;
private final List<String> values;

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

@NonNull
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    TextView view = (TextView) super.getDropDownView(position, convertView, parent);
    view.setGravity(Gravity.CENTER_VERTICAL);
    return view;
}

@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    TextView view = (TextView) super.getView(position, convertView, parent);
    view.setGravity(Gravity.CENTER_VERTICAL);
    return view;
}

}

然后在你的 Activity 或 Fragment 中设置这个自定义的 ArrayAdapter:

Spinner spinner = findViewById(R.id.houseSituation);
List<String> values = Arrays.asList("Option 1", "Option 2", "Option 3");
CustomSpinnerAdapter adapter = new CustomSpinnerAdapter(this, android.R.layout.simple_spinner_dropdown_item, values);
spinner.setAdapter(adapter);

1 个回答
 <Spinner
    android:id="@+id/houseSituation"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:listitem="@android:layout/simple_spinner_item"
    tools:itemCount="3"
    android:gravity="end"
/>

加一个样式 android:gravity="end" 解决。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题