Android - 如何显示具有值的微调器但显示不同的微调器

时间:2012-04-02 08:01:20

标签: java android spinner

对于我的Android应用,我需要使用一个显示XML树的微调器。该树是用户理解他可以选择的值的级别的必要条件。

这是我现在所拥有的照片: enter image description here

正如你所看到的,我已经放了一些'>'和一些空间来模拟树。我现在想要的是,当用户选择一个条目时,显示没有这些符号的值。

今天,微调器显示如下值: enter image description here

这个词是“>超市”,但我想要的是“超市”,只有那个。有没有办法修改微调器显示的选定值而不是列表?

我希望你能帮助我。

问候。

2 个答案:

答案 0 :(得分:4)

你可以用

这个想法来做到这一点

让你的微调器不可见将一个textView放在微调器后面 使用

将TextView文本设置为spinner选中的项目
textView.settext(spinner.getSelectedItem().replace(">","").trim()));

别忘了将微调器放在textView上,否则你不会得到微调器点击 事件

答案 1 :(得分:2)

如果有人需要,我会使用以下代码:

首先,用下面的代码部分替换你的微调器:

<RelativeLayout
    android:layout_width="190dp"
    android:layout_height="40dp"
    android:layout_marginRight="5dp">    

    <Spinner 
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:background="@drawable/custom_spinner"
        android:visibility="invisible" />

    <Button
        android:id="@+id/fake_btn"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/custom_spinner" />

    <TextView
        android:id="@+id/fake_text"
        android:layout_width="140dp"
        android:layout_height="40dp"
        android:layout_marginLeft="10dp"
        android:gravity="center_vertical"
        android:textColor="#000000" />

</RelativeLayout>

在名为custom_spinner.xml的可绘制文件夹中创建一个新的XML文件并放入该代码:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

     <item
         android:state_focused="true" 
         android:state_pressed="false" 
         android:drawable="@drawable/spinner_pressed" />

    <item
        android:state_focused="true" 
        android:state_pressed="true"
        android:drawable="@drawable/spinner_pressed" />

    <item
        android:state_focused="false" 
        android:state_pressed="true"
        android:drawable="@drawable/spinner_pressed" />

    <item
        android:drawable="@drawable/spinner_normal" />

</selector>

下载这两张图片并将其添加到您的可绘制文件夹(spinner_pressed.9.pngspinner_normal.9.png)中:

spinner_pressed.9.png spinner_normal.9.png

在您的活动中,添加以下变量:

private Spinner spinner;
private Button fake_btn;
private TextView fake_text;

在onCreate方法中,添加:

spinner = (Spinner) findViewById(R.id.spinner);
fake_btn = (Button) findViewById(R.id.fake_btn);
fake_text = (TextView) findViewById(R.id.fake_text);

fake_btn.setOnClickListener(new OnClickListener() {
    public void onClick(View v)
    {
        spinner.performClick();
    }
});

spinner_manual.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView parentView, View childView, int position, long id)
    {           
        String value = (String) spinner.getItemAtPosition(position);
        fake_text.setText(value);
    }
    public void onNothingSelected(AdapterView parentView) {}  
});

你有,它应该有用。