【问题标题】:how to show hint/hidden text in spinner in android如何在android的微调器中显示提示/隐藏文本
【发布时间】:2013-07-19 11:09:26
【问题描述】:

我需要在微调器 (android) 中显示提示。

我尝试了不同的解决方案,但还没有解决问题,那该怎么做呢?

【问题讨论】:

标签: android drop-down-menu spinner android-spinner


【解决方案1】:

我使用按钮而不是 Spinner 来处理这个问题。 I have the sample project up on GitHub.

在项目中,我同时显示 Spinner 和按钮,以表明它们确实看起来相同。除了按钮,您可以将初始文本设置为您想要的任何内容(例如提示)。

活动如下所示:

package com.stevebergamini.spinnerbutton;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends Activity {

    Spinner spinner1;
    Button button1;
    AlertDialog ad;
    String[] countries;

    int selected = -1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinner1 = (Spinner) findViewById(R.id.spinner1);
        button1 = (Button) findViewById(R.id.button1);

        countries = getResources().getStringArray(R.array.country_names);

        //  You can also use an adapter for the allert dialog if you'd like
        //  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, countries);        

        ad = new AlertDialog.Builder(MainActivity.this).setSingleChoiceItems(countries, selected,  
                new  DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            button1.setText(countries[which]);
                            selected = which;
                            ad.dismiss();

                        }}).setTitle(R.string.select_country).create(); 


        button1.setOnClickListener( new OnClickListener(){

            @Override
            public void onClick(View v) {
                ad.getListView().setSelection(selected);
                ad.show();              
            }});

    }

}

【讨论】:

    【解决方案2】:

    试试这个:

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_dropdown_item) {
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
    
            View v = super.getView(position, convertView, parent);
            if (position == getCount()) {
                ((TextView)v.findViewById(android.R.id.text1)).setText("");
                ((TextView)v.findViewById(android.R.id.text1)).setHint(getItem(getCount())); //"Hint to be displayed"
            }
    
            return v;
        }       
    
        @Override
        public int getCount() {
            return super.getCount()-1; // you dont display last item. It is used as hint.
        }
    
    };
    
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapter.add("Item 1");
    adapter.add("Item 2");
    adapter.add("Hint to be displayed");
    
    spinner.setAdapter(adapter);
    spinner.setSelection(adapter.getCount()); //displaying hint
    

    来源:Android: Spinner hint

    github 上的另一个示例:https://github.com/ravivyas84/AndroidSpinnerHint(作者 Ravi Vyas)

    如果对您有帮助,您可以使用一个小技巧,即您可以将文本颜色更改为灰色。它可能不适用于许多情况。

    希望对您有所帮助!祝你好运!

    【讨论】:

      猜你喜欢
      • 2011-11-29
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 2021-07-06
      • 1970-01-01
      相关资源
      最近更新 更多