-3

Spinner在 Android Studio 中有自定义布局:用户可以选择具有自定义布局的项目(图像 + 文本)我需要在选择后仅查看微调器上的文本而不是完整布局

自定义布局

在此处输入图像描述

不喜欢这样:

在此处输入图像描述


我的习惯Adapter

public class ColorAdapter2 extends ArrayAdapter<colorItem> {
    LayoutInflater inflater;
    ArrayList< colorItem>  items;
    public ColorAdapter2(Context context, int textViewResourceId,
                         ArrayList< colorItem> objects , LayoutInflater inflater) {
        super(context, textViewResourceId, objects);
        this.inflater = inflater;
        items = objects;
    }

    @Override
    public View getDropDownView(int position, View convertView,
                                ViewGroup parent) {

        return getCustomView(position, convertView, parent);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        return getCustomView(position, convertView, parent);
    }

    public View getCustomView(int position, View convertView, ViewGroup parent) {


        View row = inflater.inflate(R.layout.color_item, parent, false);
        TextView label = (TextView) row.findViewById(R.id.nameColor);
        label.setText(items.get(position).getName());

        ImageView icon = (ImageView) row.findViewById(R.id.iconColor);

        icon.setImageResource(items.get(position).getImageId());
        return row;
    }
}

...和行布局:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:background="@drawable/edittext"
    android:padding="10dp"
    android:layout_margin="10dp">

    <ImageView
        android:id="@+id/iconColor"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginLeft="30dp"
        android:src="@drawable/blue_image"/>

    <TextView
        android:id="@+id/nameColor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>
4

4 回答 4

1

请尝试手动隐藏元素

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                
        view.findViewById(R.id.viewYouWantToHide).setVisibility(View.GONE);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
    }
});  

当微调器用另一个元素重新选择或什么都不选择时,您可能需要恢复隐藏的元素以使其可见

于 2017-11-07T05:46:17.150 回答
0

使用事件提供的视图隐藏/使默认文本或微调器或静态文本上的选定文本的可见性为零。

 public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {
    TextView tv = (TextView) view;
    tv.setVisibility(View.GONE);
    }
于 2018-12-05T07:52:59.937 回答
-1

在 Spinner Item Selected 上隐藏您的Imageview并将其设置为在 Nothing Selected 上可见

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        // your code here

      selectedItemView.findViewById(R.id.iconColor).setVisibility(View.GONE);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // your code here
    }

});
于 2017-11-07T05:48:08.117 回答
-1

因此,您可以收听 itemSelectedEvent,然后从中检索 ImageView,然后将其可见性设置为“GONE”。

这是您将如何执行此操作的示例。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {
    // your code here
ImageView imageView = view.findViewById(R.id.iconColor);
imageView.setVisibility(View.GONE);
}

@Override
public void onNothingSelected(AdapterView<?> parentView) {
    // your code here
}
});
于 2017-11-07T05:51:32.897 回答