2016-04-12 8 views
0

У меня есть WebView с кнопкой перед ним. Кнопка открывает URL-адрес в внешнем браузере, который работает как шарм в Android API 21 и выше. Но я также тестирую API 16, чтобы охватить больше устройств. В API API 19 и ниже кнопка не появляется, над ними кнопка видна и работает. Кнопка видна только тогда, когда WebView получает URL-адрес. До этого кнопка невидима.Кнопка не видна перед WebView (API 19 и среди них)

мой соответствующий код Java является:

public void launchWebViewByURL(String url) 
    { 
     showSpinner(); 
     Button browserButton = (Button) fragmentView.findViewById(R.id.WebViewButton); 
     browserButton.setVisibility(View.VISIBLE); 
     webView.loadUrl(url); 
    } 

моя соответствующая XMK является

<RelativeLayout 
     android:id="@+id/WebViewLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_above="@+id/statusIndicators" 
     android:layout_below="@+id/statusIndicatorTop"> 

     <Button 
      android:id="@+id/WebViewButton" 
      android:text="@string/webViewButton" 
      android:layout_width="80dp" 
      android:layout_height="50dp" 
      android:textSize="7dp" 
      android:alpha="0.7" 
      android:visibility="invisible" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentEnd="true" 
      android:layout_marginRight="5dp" 
      android:layout_marginBottom="5dp" /> 

     <WebView 
      android:id="@+id/WebView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:requiresFadingEdge="vertical" 
      android:fadingEdgeLength="16dp" 
      android:background="@color/colorPrimary" 
      android:overScrollMode="ifContentScrolls" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentLeft="true" 
      android:visibility="visible" /> 


     <RelativeLayout 
      android:id="@+id/WebViewOverlay" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" 
      android:background="@android:color/black" 
      android:visibility="invisible" 
      android:alpha="0.5"> 

      <com.pnikosis.materialishprogress.ProgressWheel 
       android:id="@+id/ProgressWheel" 
       android:layout_width="@dimen/spinner_dimen" 
       android:layout_height="@dimen/spinner_dimen" 
       android:layout_centerHorizontal="true" 
       android:layout_centerVertical="true" 
       wheel:matProg_barColor="@color/colorAccent" 
       wheel:matProg_circleRadius="@dimen/spinner_dimen" 
       wheel:matProg_barWidth="@dimen/spinner_breadth" 
       wheel:matProg_progressIndeterminate="true" 
       /> 

     </RelativeLayout> 

    </RelativeLayout> 

Когда WebView имеет альфа, как кнопка, кнопка видна но не трогательно. Когда WebView невидим, кнопка отображается и работает. Может кто-нибудь помочь мне привести кнопку на передний план в «нижних» API, например, 19 и ниже?

ответ

1

Причина, почему кнопка не слушает трогать, потому что его получение потребляется WebView, как WebView находится в передней части кнопки. Когда вы изменяете альфа для WebView, она по-прежнему отображается в ViewGroup (в вашем случае RelativeLayout) и потребляет все события касания в пределах своих границ. Таким образом, решение для вас - это принести свою кнопку вперед. Можно подумать о том, чтобы прочитать документацию для RelativeLayout, чтобы узнать, как она работает.

ниже код должен работать

<RelativeLayout 
    android:id="@+id/WebViewLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@+id/statusIndicators" 
    android:layout_below="@+id/statusIndicatorTop"> 

    <WebView 
     android:id="@+id/WebView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/colorPrimary" 
     android:fadingEdgeLength="16dp" 
     android:overScrollMode="ifContentScrolls" 
     android:requiresFadingEdge="vertical" 
     android:visibility="visible"/> 

    <RelativeLayout 
     android:id="@+id/WebViewOverlay" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:alpha="0.5" 
     android:background="@android:color/black" 
     android:visibility="invisible"> 

     <com.pnikosis.materialishprogress.ProgressWheel 
      android:id="@+id/ProgressWheel" 
      wheel:matProg_barColor="@color/colorAccent" 
      wheel:matProg_barWidth="@dimen/spinner_breadth" 
      wheel:matProg_circleRadius="@dimen/spinner_dimen" 
      wheel:matProg_progressIndeterminate="true" 
      android:layout_width="@dimen/spinner_dimen" 
      android:layout_height="@dimen/spinner_dimen" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      /> 

    </RelativeLayout> 

    <Button 
     android:id="@+id/WebViewButton" 
     android:layout_width="80dp" 
     android:layout_height="50dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_marginBottom="5dp" 
     android:layout_marginRight="5dp" 
     android:alpha="0.7" 
     android:text="@string/webViewButton" 
     android:textSize="7dp" 
     android:visibility="invisible"/> 
</RelativeLayout> 
+0

Спасибо вашему очень много, что решить мою проблему. –

0

В относительном расположении порядок элементов «z» определяется порядком добавления этих элементов в относительный макет. Итак, нижний элемент находится в макете, тем выше его значение z. При этом переместите WebViewButton в нижней части макета, чтобы он находился над веб-просмотром.

0
try for this 


    <Button 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Enter" 
       android:id="@+id/WebViewButton" 
       /> 

      <WebView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/webView" 
       android:layout_below="@+id/WebViewButton" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentEnd="true" 
       android:layout_alignParentBottom="true" /> 
0
<RelativeLayout 
     android:id="@+id/WebViewLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     > 



     <WebView 
      android:id="@+id/WebView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:requiresFadingEdge="vertical" 
      android:fadingEdgeLength="16dp" 
      android:background="@color/colorPrimary" 
      android:overScrollMode="ifContentScrolls" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentLeft="true" 
      android:visibility="visible" /> 


     <Button 
      android:id="@+id/WebViewButton" 
      android:text="gfjhfgj" 
      android:layout_width="80dp" 
      android:layout_height="50dp" 
      android:textSize="7dp" 
      android:alpha="0.7" 
      android:visibility="visible" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentEnd="true" 
      android:layout_marginRight="5dp" 
      android:layout_marginBottom="5dp" /> 

    </RelativeLayout>