对于我的Android应用,我需要使用一个显示XML树的微调器。该树是用户理解他可以选择的值的级别的必要条件。
这是我现在所拥有的照片:
正如你所看到的,我已经放了一些'>'和一些空间来模拟树。我现在想要的是,当用户选择一个条目时,显示没有这些符号的值。
今天,微调器显示如下值:
这个词是“>超市”,但我想要的是“超市”,只有那个。有没有办法修改微调器显示的选定值而不是列表?
我希望你能帮助我。
问候。
诉P>
答案 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.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) {}
});
你有,它应该有用。