Android Spinner项目作为网格 [英] Android Spinner items as a grid
问题描述
默认情况下,单击微调框时,项目显示为列表。我想改变显示为网格的项目。
我该怎么做?
我只需要一些方向。
感谢
更新:
这是我的代码。我的控制器下拉显示为多排网格。我附上了这张照片的样子。我也无法选择这些值。
package com.example.com.android.spinner;
c $ c> GridView 来获取回调。例如:
导入android.app.Activity;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.View;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.GridView;
导入android.widget.ImageView;
导入android.widget.Spinner;
导入android.widget.TextView;
public class AndroidCustomSpinner extends Activity {
String [] DayOfWeek = {Sunday,Monday,Tuesday,
Wednesday,Thursday , 星期五星期六};
/ **首次创建活动时调用。 * /
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Spinner mySpinner =(微调)findViewById(R.id.spinner);
mySpinner.setAdapter(new MyCustomAdapter(AndroidCustomSpinner.this,R.layout.row,DayOfWeek));
}
public class MyCustomAdapter extends ArrayAdapter< String> {
private context context;
public MyCustomAdapter(Context context,int textViewResourceId,
String [] objects){
super(context,textViewResourceId,objects);
this.context = context;
// TODO自动生成的构造函数存根
}
$ b @Override
public View getDropDownView(int position,View convertView,
ViewGroup父类){
// TODO自动生成方法存根
返回getCustomView(position,convertView,parent);
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
// TODO自动生成的方法存根
TextView标记=(TextView的)convertView;
if(convertView == null){
convertView = new TextView(context);
label =(TextView)convertView;
}
label.setText(DayOfWeek [position]);
return(convertView);
$ b $ public View getCustomView(int position,View convertView,ViewGroup parent){
// TODO自动生成的方法存根
//返回super.getView(position,convertView,parent);
LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.row,parent,false);
GridView标签=(GridView)row.findViewById(R.id.gridView1);
ArrayAdapter< String> adapter = new ArrayAdapter< String>(AndroidCustomSpinner.this,android.R.layout.simple_list_item_1,DayOfWeek);
label.setAdapter(adapter);
返回行;
$ b $ main $
<?xml version =1.0encoding =utf-8?>
< LinearLayout xmlns:android =http://schemas.android.com/apk/res/android
android:orientation =vertical
android:layout_width =fill_parent
android:layout_height =fill_parent
>
< TextView
android:layout_width =fill_parent
android:layout_height =wrap_content
android:text =@ string / hello
/>
< Spinner
android:id =@ + id / spinner
android:layout_width =fill_parent
android:layout_height =wrap_content
/> ;
< / LinearLayout>
row.xml
<?xml version =1.0encoding =utf-8?>
< LinearLayout xmlns:android =http://schemas.android.com/apk/res/android
android:layout_width =fill_parent
android:layout_height =wrap_content
android:orientation =horizontal>
< GridView
android:id =@ + id / gridView1
android:numColumns =auto_fit
android:gravity =center
android:columnWidth =50dp
android:stretchMode =columnWidth
android:layout_width =fill_parent
android:layout_height =fill_parent>
< / GridView>
< / LinearLayout>
解决方案您需要覆盖
getDropDownView
Spinner
的方法显示GridView
。
为了从
Spinner
中选择数值,请在<$ code> OnItemClickListener
label.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent ,View v,int pos,long id){
Toast.makeText(getContext(),+ pos,Toast.LENGTH_SHORT).show();
}
});
By default when Spinner is clicked, items are showed as list. I want to change the items showed as grid. How can I do that? I just need some direction.
Thanks UPDATE: This is my code. My spinner drop down is showing up as multiple rows of grid.I have attached a picture of how it looks like at this moment. I am also unable to select the values.
package com.example.com.android.spinner; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; public class AndroidCustomSpinner extends Activity { String[] DayOfWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Spinner mySpinner = (Spinner)findViewById(R.id.spinner); mySpinner.setAdapter(new MyCustomAdapter(AndroidCustomSpinner.this, R.layout.row, DayOfWeek)); } public class MyCustomAdapter extends ArrayAdapter<String>{ private Context context; public MyCustomAdapter(Context context, int textViewResourceId, String[] objects) { super(context, textViewResourceId, objects); this.context=context; // TODO Auto-generated constructor stub } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub return getCustomView(position, convertView, parent); } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub TextView label=(TextView)convertView; if (convertView==null) { convertView=new TextView(context); label=(TextView)convertView; } label.setText(DayOfWeek[position]); return(convertView); } public View getCustomView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub //return super.getView(position, convertView, parent); LayoutInflater inflater=getLayoutInflater(); View row=inflater.inflate(R.layout.row, parent, false); GridView label=(GridView)row.findViewById(R.id.gridView1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(AndroidCustomSpinner.this,android.R.layout.simple_list_item_1,DayOfWeek); label.setAdapter(adapter); return row; } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
row.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <GridView android:id="@+id/gridView1" android:numColumns="auto_fit" android:gravity="center" android:columnWidth="50dp" android:stretchMode="columnWidth" android:layout_width="fill_parent" android:layout_height="fill_parent" > </GridView> </LinearLayout>
解决方案You need to override
getDropDownView
method of yourSpinner
to show theGridView
.And in order to select values out from your
Spinner
, useOnItemClickListener
on yourGridView
to get callbacks. for example:label.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int pos, long id) { Toast.makeText(getContext(), "" + pos, Toast.LENGTH_SHORT).show(); } });
这篇关于Android Spinner项目作为网格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!