同学项目中用到,用1小时草草写了下。记录下来,以备以后使用。

效果图:

 

095806396.png  095806817.png

 

 

MainActivity.class

public class MainActivity extends Activity {
private static final String[] m={"A","B","C","D","E","F","G","其他","其他","其他"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MySpinner mySpinner=(MySpinner) findViewById(R.id.button);
mySpinner.initContent(m);
}
}

 

MySpinner.class

public class MySpinner extends Button {
private List<Integer> list=new ArrayList<Integer>();
public MySpinner(Context context) {
super(context);
}
public MySpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text+"    ▼", type);
}
public void initContent(final String[] m) {
setText(m[0], null);
OnClickListener listener=new OnClickListener() {
@Override
public void onClick(View v) {
final SpinnerDialog dialog=new SpinnerDialog(getContext());
TextView textView=(TextView) dialog.findViewById(R.id.over_text);
textView.setText("完成");
textView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(list.size()==0){
setText(m[0], null);
}else{
StringBuffer buffer=new StringBuffer();
int size=list.size();
for (int i = 0; i < size; i++) {
buffer.append(m[list.get(i)]+',');
}
setText(buffer.toString().substring(0, buffer.length()-1),null);
}
dialog.cancel();
list.clear();
}
});
dialog.show();
ListView listView=(ListView) dialog.findViewById(R.id.listview);
listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(getContext(),android.R.layout.simple_list_item_multiple_choice,m);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Integer object=Integer.valueOf(arg2);
if(list.contains(object)){
list.remove(object);
}else{
list.add(object);
}
}
});
dialog.show();
}
};
super.setOnClickListener(listener);
}
private class SpinnerDialog extends Dialog {
public SpinnerDialog(Context context) {
super(context, R.style.Theme_dialog);
setContentView(R.layout.spinner);
Window window = getWindow();
WindowManager.LayoutParams params = window.getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.gravity = Gravity.CENTER;
DisplayMetrics dm = new DisplayMetrics();
getWindow().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
int screenHeigh = dm.heightPixels;
params.height=(int) (screenHeigh*0.8);
params.width=(int) (screenWidth*0.8);
window.setAttributes(params);
}
}
}

 

spinner.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"
android:padding="10dp"
android:background="@android:color/white"
android:gravity="center">
<TextView
android:id="@+id/over_text"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:textSize="20sp"
android:gravity="center"
android:textColor="@android:color/black"
/>
<ListView
android:id="@+id/listview"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
</LinearLayout>

 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<com.example.spinnertext.MySpinner
android:id="@+id/button"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textSize="20sp"
/>
</RelativeLayout>

 

样式:

<style name="Theme_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
</style>