我想在按钮点击下方制作下拉自定义对话框。
单击计数器按钮,布局将显示在按钮下面。
我看到很多链接但它们只打开列表:
新的快速操作包
上面的链接对我没用。
但是当我使用对话框时,它会出现在按钮的前面。
所以如果您知道,请帮助我。
我想在按钮点击下方制作下拉自定义对话框。
单击计数器按钮,布局将显示在按钮下面。
我看到很多链接但它们只打开列表:
新的快速操作包
上面的链接对我没用。
但是当我使用对话框时,它会出现在按钮的前面。
所以如果您知道,请帮助我。
我认为你可以通过使用getLocationOnScreen() API和PopUpWindow组件来实现你想要的功能。
以下是示例代码。
int[] location = new int[2];
counterView.getLocationOnScreen(location);
final View mView = inflater.inflate(R.layout.xxxx, null, false);
final PopupWindow popUp = new PopupWindow(mView, Width, Height, false);
popUp.setTouchable(true);
popUp.setFocusable(true);
popUp.setOutsideTouchable(true);
popUp.showAtLocation(view, Gravity.NO_GRAVITY, location[0], location[1]);
PopupWindow还有一个方法showAsDropDown
,可以将弹出窗口显示在视图下方的下拉菜单中。
public class MainActivity extends AppCompatActivity {
private Button button;
private WindowManager.LayoutParams layoutParams;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((Button) findViewById(R.id.button)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final View mView = LayoutInflater.from(MainActivity.this).inflate(R.layout.drop_down_layout, null, false);
final PopupWindow popUp = new PopupWindow(mView, LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT, false);
popUp.setTouchable(true);
popUp.setFocusable(true);
popUp.setOutsideTouchable(true);
//Solution
popUp.showAsDropDown(findViewById(R.id.button));
}
});
}
}
我尝试在 PopupWindow 中使用 wrap_content,结果惊讶地发现它仍然有效。
PopupWindow popupWindow = new PopupWindow(testView, LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT, false);