如何在android下单击按钮打开下面的自定义布局对话框?

时间:2013-04-19 13:33:32

标签: android

我想点击按钮下面的下拉自定义对话框。

enter image description here

点击计数器按钮,布局将显示在按钮下方。

我看到很多链接,但只打开列表: -

Action Bar dropdown open and closed item styles

新的快速行动计划

以上链接不对我使用。

但是当我使用对话框时,它出现在按钮的前面。

所以,如果你知道那么帮助我。

4 个答案:

答案 0 :(得分:6)

我认为您可以通过

实现您的目标

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]);

答案 1 :(得分:2)

PopupWindow还有一个方法showAsDropDown,它将弹出窗口显示为视图下方的下拉列表

答案 2 :(得分:2)

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));
            }
        });
    }
}

答案 3 :(得分:0)

我在PopupWindow中尝试 wrap_content 并感到惊讶,因为它仍然有效。

$route['ViewShan'] = 'member/jammat/viewJammat';