2012-04-02 216 views
4

对于我的Android应用程序,我需要使用显示XML树的微调框。这棵树是让用户理解他可以选择的价值的级别。Android - 如何显示有价值的微调框,但显示不同的值

这里是什么,我现在所拥有的一个画面: enter image description here

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

今天,微调显示这样的值: enter image description here

的词是“>超市”,但我要的是“超市”,并且仅此而已。有没有办法修改微调器显示的选定值,但不是列表?

我希望你能帮助我。

问候。

回答

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

你来了,它应该工作。

+0

匹配的自定义图像,此代码不完整,您没有添加将值替换为Vipin建议的代码。仍然我通过这个解决了我的问题,所以+1给你们两个:) – 2013-04-19 06:13:23

4

你可以做到这一点的想法,

让你的微调无形把微调 集的TextView文本后面的TextView的,以微调器选择的项目与

textView.settext(spinner.getSelectedItem().replace(">","").trim())); 

不要忘记将微调器放在textView上,否则你将无法获得微调器点击 事件

+0

谢谢,但如果我想显示微调器的形状如何做同样的事情? – Manitoba 2012-04-02 08:30:39

+0

其简单只是设置你的文本视图的背景,以微调图像 – vipin 2012-04-02 08:32:24

+0

你需要可以轻松获得的微调图像 – vipin 2012-04-02 08:33:03