先上图:
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" android:gravity="center_horizontal">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<TextView android:id="@+id/btn" android:layout_width="200dip"
android:singleLine="true" android:textColor="@android:color/black"
android:background="@android:color/white" android:layout_height="25dip"
android:text="下拉。。。" android:gravity="left" android:drawableRight="@drawable/spinner_sanjiao"
android:focusable="false" />
</LinearLayout>
popwindow.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ScrollView android:layout_width="fill_parent"
android:scrollbarFadeDuration="0" android:layout_height="80dip"
android:scrollbarAlwaysDrawVerticalTrack="true" android:background="@android:color/white">
<RadioGroup android:id="@+id/rg" android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RadioButton android:id="@+id/b11" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="中国" />
<RadioButton android:id="@+id/b22" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="长沙" />
<RadioButton android:id="@+id/b33" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="湖南农sdfsdfsdfsdfsdfsdfsdddd大" />
<RadioButton android:id="@+id/b44" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="犀利" />
<RadioButton android:id="@+id/b55" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="尼玛" />
<RadioButton android:id="@+id/b22" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="长沙" />
<RadioButton android:id="@+id/b33" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="湖南农大" />
<RadioButton android:id="@+id/b44" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="犀利" />
<RadioButton android:id="@+id/b55" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="尼玛" />
<RadioButton android:id="@+id/b22" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="长沙" />
<RadioButton android:id="@+id/b33" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="湖南农大" />
<RadioButton android:id="@+id/b44" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="犀利" />
<RadioButton android:id="@+id/b55" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="尼玛" />
<RadioButton android:id="@+id/b22" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="长沙" />
<RadioButton android:id="@+id/b33" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="湖南农大" />
<RadioButton android:id="@+id/b44" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="犀利" />
<RadioButton android:id="@+id/b55" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="尼玛" />
<RadioButton android:id="@+id/b22" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="长沙" />
<RadioButton android:id="@+id/b33" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="湖南农大" />
<RadioButton android:id="@+id/b44" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="犀利" />
<RadioButton android:id="@+id/b55" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="尼玛" />
<RadioButton android:id="@+id/b22" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="长沙" />
<RadioButton android:id="@+id/b33" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="湖南农大" />
<RadioButton android:id="@+id/b44" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="犀利" />
<RadioButton android:id="@+id/b55" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="尼玛" />
<RadioButton android:id="@+id/b22" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="长沙" />
<RadioButton android:id="@+id/b33" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="湖南农大" />
<RadioButton android:id="@+id/b44" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="犀利" />
<RadioButton android:id="@+id/b55" android:layout_width="fill_parent"
android:textColor="#000000" android:background="#FFFFFF"
android:layout_height="wrap_content" android:button="@null"
android:text="尼玛" />
</RadioGroup>
</ScrollView>
</LinearLayout>
接下来是Activity:
package com.deng.ui;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
public class PopWindow_DemoActivity extends Activity implements
OnCheckedChangeListener {
TextView tv;
PopupWindow pupup;
RadioGroup rg;
View vv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.btn);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("cccc...");
if (pupup != null && pupup.isShowing()) {
dismissPop();
return;
}
showPopWindow();
}
});
}
public void showPopWindow() {
LayoutInflater in = (LayoutInflater) PopWindow_DemoActivity.this
.getSystemService(LAYOUT_INFLATER_SERVICE);
vv = in.inflate(R.layout.popwindow, null);
rg = (RadioGroup) vv.findViewById(R.id.rg);
rg.setOnCheckedChangeListener(this);
int[] location = new int[2];
tv.getLocationOnScreen(location);
pupup = new PopupWindow(vv, tv.getWidth(), LayoutParams.WRAP_CONTENT);
pupup.showAtLocation(findViewById(R.id.btn), Gravity.NO_GRAVITY,
location[0], location[1] + tv.getHeight());
}
public void dismissPop() {
pupup.dismiss();
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
RadioButton rb = (RadioButton) vv.findViewById(checkedId);
tv.setText(rb.getText());
dismissPop();
}
}
1.ScrollView要设置 android:background="@android:color/white",不然默认的灰色渐变会与被遮盖的控件产生白色重影。
2.让PopupWindow显示在事件控件的下方,用如下代码:
pupup = new PopupWindow(vv, tv.getWidth(), LayoutParams.WRAP_CONTENT);
pupup.showAtLocation(findViewById(R.id.btn), Gravity.NO_GRAVITY,
location[0], location[1] + tv.getHeight());
3.下拉事件产生源用了TextView,然后在TextView的右方上了一个三角形的图: android:drawableRight="@drawable/spinner_sanjiao"
4.不在当前layout的控件要通过LayoutInflater获得View后,再通过该View找到,而不是直接findViewById,如: RadioButton rb = (RadioButton) vv.findViewById(checkedId);