Android的微调 - 如何删除单选按钮?
-
19-09-2019 - |
题
在Android 1.6的,当敲击旋转器(下拉菜单),单选按钮出现旁边的纺丝器的选项。如何删除这些单选按钮,这样就在选项文本保持?
解决方案
只是删除单选按钮,你不需要自己的适配器类。
创建在布局中的dropdown_item.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:ellipsize="marquee" />
然后使在代码下面的调用。
arrayAdapter.setDropDownViewResource(R.layout.dropdown_item);
默认微调下拉项是具有单选按钮一个CheckedTextView。在这里,您有一个TextView替换它。
其他提示
可以使用机器人布局
android.R.layout.simple_spinner_item
代替
的android.R.layout.simple_spinner_dropdown_item
但我建议 @kimkunjj 的答案,它会给你布局的控制。
如果你想获得你必须提供行自己的布局微调名单上除掉单选按钮。点击 看看下面的例子:结果
package com.ramps;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.SpinnerAdapter;
public class MySpinner extends Activity {
//data that will be used as a spinner options
private static String data[] = {"one", "two", "three"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//main.xml file contains spinner
setContentView(R.layout.main);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
//create your own adapter
MySpinnerAdapter adapter = new MySpinnerAdapter(this,R.layout.custom_spinner_row,R.id.text, data );
//set your custom adapter
spinner.setAdapter( adapter );
}
private class MySpinnerAdapter extends ArrayAdapter{
public MySpinnerAdapter(Context context, int resource,
int textViewResourceId, String[] objects) {
super(context, resource, textViewResourceId, objects);
}
}
}
,点击 用于微调行自定义布局仅仅是一个简单的LinearLayout与ID是“文本”一个TextView元素(机器人:ID =“@ + ID /文本”) 搜索结果 这仅仅是简单的例子。如果您需要更多花哨的布局不仅仅是TextView的话你可能重写getView()MySpinnerAdapter的方法。
“android.R.layout.simple_spinner_item” 做工作,
编程这是:
modeSpinner=new Spinner(layout.getContext());
ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(layout.getContext(),
android.R.layout.simple_spinner_item, Arrays.asList(modes));
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
如果您已包括支持Android库版本18或以上到你的项目,那么你可以替换的资源ID simple_spinner_dropdown_item
与support_simple_spinner_dropdown_item
。这将除去的单选按钮。
使用simple_dropdown_item_1line
这样做的“最干净”的方式(只是删除复选标记和的不的触摸anythinbg其他包括文字样式,项目大小等)来创建自定义适配器(像上面的答案) :
public class SimpleSpinnerArrayAdapter extends ArrayAdapter<String> {
public SimpleSpinnerArrayAdapter(Context context, String[] data) {
super(context, android.R.layout.simple_spinner_item, data);
this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}
public SimpleSpinnerArrayAdapter(Context context, List<String> data) {
super(context, android.R.layout.simple_spinner_item, data);
this.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}
/**
* Returns default dropdown view with removed checkbox
*/
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = super.getDropDownView(position, convertView, parent);
if (view != null && view instanceof CheckedTextView) {
((CheckedTextView) view).setCheckMarkDrawable(null);
}
return view;
}
}
请注意它返回下拉列表项目视图的getDropDownView()
方法。你可以在这里使用任何自定义视图,但如果你想坚持到你或许应该使用上面的代码中的默认视图。