如何检测下拉菜单是否显示在android中的微调器上方或下方?

时间:2016-04-07 01:30:58

标签: android spinner

我正在设计的旋转器外观定制 我想要的是当微调器弹出窗口下方我要使用的微调器下方时 popupbackground图像不同,当它在微调器上方弹出时我想使用不同的弹出背景

这是我的Xml代码:

 <Spinner
    android:id="@+id/spinner1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:spinnerMode="dropdown"
    android:popupBackground="@drawable/spinnerbottombg"
    android:overlapAnchor="false"
    android:drawSelectorOnTop="false"

    />

现在的问题是我怎么知道微调器打开它上面或下面的下拉列表

1 个答案:

答案 0 :(得分:10)

我深入挖掘PopupWindow,发现你的要求可以通过

来实现
  

StateListDrawable

以下代码将解释所有内容 -

activity_main.xml

  <body ng-app="starter" style="padding-top:150px;">

     <div  ng-controller="AppCtrl" id="header" >
        <div class="bar-aaa">
            <div class="myLogo">
                <img src="img/images/logo.png" style="display: block;margin-left:auto;margin-right:auto;height:50px;margin-top:10px;margin-bottom:30px;" alt=""/>
            </div>

            <div class="row" style="padding-bottom: 0px;">
                <div class="col col-33" style="border-bottom: 2px solid {{oneLine}};margin-bottom: 0;height: 59px;"><a href="javascript:;" ui-sref="app.dashboard" style="display: block;padding: 19px 0px 37px;margin-top: -19px;"><img src="{{one}}" style="display: block;margin-left:auto;margin-right:auto;" alt=""/></a></div>
                <div class="col col-33" style="border-bottom: 2px solid {{twoLine}};margin-bottom: 0;height: 59px;"><a href="javascript:;" ng-click="allCoupons();" on-swipe-left="allCoupons();" style="display: block;padding: 19px 0px 37px;margin-top: -19px;"><img src="{{two}}" style="height:17px;display: block;margin-left:auto;margin-right:auto;" alt=""/></a></div>
                <div class="col col-33" style="border-bottom: 2px solid {{threeLine}};margin-bottom: 0;height: 59px;"><a href="javascript:;"  ui-sref="app.settings" style="display: block;padding: 19px 0px 37px;margin-top: -19px;"><img src="{{three}}" style="height:17px;display: block;margin-left:auto;margin-right:auto;" alt=""/></a></div>
            </div>
        </div>
     </div>
     <span ng-show="loading" style="position: absolute;z-index: 99999;margin-left:-75px;top:150px;left:50%;right:50%;background:rgba(0,0,0,0.5);text-align:center;padding:15px;width:150px;" >
        <div>
            <ion-spinner icon="spiral"></ion-spinner>
            <h5 style="color:#fff;">Processing...</h5>
        </div>

     </span>

    <ion-nav-view></ion-nav-view>


  </body>

<强> popup_bg_above.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="com.mmbarno.dummyalertdialog.MainActivity">

   <Spinner
       android:id="@+id/spinner"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:spinnerMode="dropdown"
       android:overlapAnchor="false"
       android:drawSelectorOnTop="false" />
</RelativeLayout>

<强> popup_bg_below.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
   <solid android:color="#FF4081" />
</shape>

最后在 MainActivity.java

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
   <solid android:color="#3F51B5" />
</shape>

希望您的要求得到满足。我和ScrollView一起在不同的场景中测试了它。它完美无缺。

Popup Below

Popup Above