【问题标题】:android spinner - how to show only text after select itemandroid spinner - 如何在选择项目后仅显示文本
【发布时间】:2017-11-07 05:39:49
【问题描述】:

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

不喜欢这样:


我的自定义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>

【问题讨论】:

    标签: android android-layout android-studio android-spellcheck


    【解决方案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) {
        }
    });  
    

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

    【讨论】:

    • 谢谢。这是工作,但我在选择项目后仍然有一个大尺寸(图像和文本的大小)在微调器上
    • 微调器必须像我的问题中的图像 2
    【解决方案2】:

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

     public void onItemSelected(AdapterView<?> parentView, View view, int position, long id) {
        TextView tv = (TextView) view;
        tv.setVisibility(View.GONE);
        }
    

    【讨论】:

      【解决方案3】:

      在 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
          }
      
      });
      

      【讨论】:

        【解决方案4】:

        所以您可以监听 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
        }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-09
          相关资源
          最近更新 更多