2017-06-29 51 views
-4

我正在開發一個具有文本視圖和浮動操作按鈕的android應用程序。滾動Textview時,我希望按鈕顯示/隱藏。我試圖使用addOnScrollListner方法,但我認爲它只能在recyclerView上工作而不是在文本視圖上。 你能告訴我該如何編程? 我把我的textview放入Scrollview。如何在滾動文本的同時在textview下隱藏浮動按鈕

我感謝您的幫助! 謝謝

我的動態

package com.byc3.bman202.tafachlovetwo; 

/** 
* Created by hp on 6/24/2017. 
*/ 
import android.app.Activity; 
import android.content.Intent; 
import android.graphics.drawable.AnimationDrawable; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.view.View; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 


public class abat1 extends Activity { 
    RelativeLayout container; 
    AnimationDrawable anim; 
    TextView textView; 
    FloatingActionButton floatingActionButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.ab1); 

     AdView mAdView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder() 
       //.addTestDevice("3ACD2930EB5A1E83583AA8EA86BCAB53") 
       .build(); 
     mAdView.loadAd(adRequest); 
     View.OnClickListener handler = new View.OnClickListener() { 
      public void onClick(View v) { 
       switch (v.getId()) { 
        case R.id.fab2: 
         shareTextUrl(); 
         break; 
        //case R.id.buttonShareImage: 
        //shareImage(); 
        //break; 

       } 
      } 

     }; 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab2); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       shareTextUrl(); 
      } 
     }); 
     container = (RelativeLayout) findViewById(R.id.containerab1); 

     anim = (AnimationDrawable) container.getBackground(); 
     anim.setEnterFadeDuration(2000); 
     anim.setExitFadeDuration(3000); 
     findViewById(R.id.fab2).setOnClickListener(handler); 
     TextView textView = (TextView) findViewById(R.id.textView1); 
     textView.addOnScrollListener(new TextView.OnScrollListener() { 
      @Override 
      public void onScrolled(TextView textView, int dx, int dy) { 
       super.onScrolled(teView, dx, dy); 

       if (dy >0) { 
        // Scroll Down 
        if (floatingActionButton.isShown()) { 
         floatingActionButton.hide(); 
        } 
       } 
       else if (dy <0) { 
        // Scroll Up 
        if (!floatingActionButton.isShown()) { 
         floatingActionButton.show(); 
        } 
       } 
      } 
     }); 

    } 

    private void shareTextUrl() { 
     Intent share = new Intent(Intent.ACTION_SEND); 
     share.setType("text/plain"); 
     share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
     // Add data to the intent, the receiving app will decide 
     // what to do with it. 
     share.putExtra(Intent.EXTRA_SUBJECT, "Title Of The Post"); 
     share.putExtra(Intent.EXTRA_TEXT, getString(R.string.ab1)); 
     startActivity(Intent.createChooser(share, getString(R.string.shareit))); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (anim != null && !anim.isRunning()) 
      anim.start(); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     if (anim != null && anim.isRunning()) 
      anim.stop(); 
    } 

} 

XML佈局

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:paddingBottom="0dp" 
    android:paddingTop="15dp" 
    android:id="@+id/containerab1" 
    android:background="@drawable/layout_anim" 
    android:orientation="vertical" 
    android:weightSum="1" 
    tools:context="com.byc3.bman202.tafachlovetwo.abat1"> 
    <ScrollView 
     android:paddingTop="10dp" 
     android:layout_alignParentTop="true" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/scrollView" 
     android:layout_above="@+id/adView"> 
    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textSize="22sp" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:text="@string/ab1" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textColor="#f2f2f2" 
     android:lineSpacingExtra="12dp" 
     android:gravity="start"/> 
</ScrollView> 
    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/adView" 
     android:layout_marginRight="5dp" 
     android:layout_marginEnd="5dp" 

     android:src="@android:drawable/ic_menu_share" 
     app:backgroundTint="@color/color1" 

     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     /> 

    <com.google.android.gms.ads.AdView 
     android:id="@+id/adView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     ads:adSize="SMART_BANNER" 
     android:layout_alignParentBottom="true" 
     ads:adUnitId="@string/banner_ad_unit_id"> 
    </com.google.android.gms.ads.AdView> 



</RelativeLayout> 

回答

0

試試這個,

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
       mScrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() { 
        @Override 
        public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
         if (scrollY > 0 && fab2.isShown()) { 
          fab2.setVisibility(View.GONE); 
         } else if (scrollY < 0) { 
          fab2.setVisibility(View.VISIBLE); 

         } 
        } 
       }); 
      } else { 
       mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { 
        @Override 
        public void onScrollChanged() { 
         int mScrollY = mScrollView.getScrollY(); 
         if (mScrollY > 0 && fab2.isShown()) { 
          fab2.setVisibility(View.GONE); 
         } else if (mScrollY < 0) { 
          fab2.setVisibility(View.VISIBLE); 
         } 
        } 
       }); 
      } 
+0

謝謝!這接近我的問題答案。當我向上滾動,按鈕被隱藏(這是我需要的)問題是,當我向下滾動按鈕仍然消失。如何使它可見? –

+0

它在棉花糖工作正常,哪些設備我測試 –

+0

我正在測試棒棒糖 –

相關問題