Android開(kāi)發(fā)中在TableView上添加懸浮按鈕的方法
如果直接在TableVIewController上貼Button的話(huà)會(huì)導(dǎo)致這個(gè)會(huì)隨之滾動(dòng),下面解決在TableView上實(shí)現(xiàn)位置固定懸浮按鈕的兩種方法:
1.在view上貼tableView,然后將懸浮按鈕貼在view的最頂層
2.使用window
首先看一下最終的效果,在tableViewController上添加一個(gè)懸浮按鈕,該按鈕不能隨著視圖的滾動(dòng)而滾動(dòng)

首先介紹上面的第一種方法:
1)創(chuàng)建tableview和底部按鈕的屬性
//屏幕寬 #define kScreenW [UIScreen mainScreen].bounds.size.width //屏幕高 #define kScreenH [UIScreen mainScreen].bounds.size.height @interface broadcastLiveViewController ()<UITableViewDataSource, UITableViewDelegate> @property(nonatomic) UITableView *livesListTable; @property(nonatomic) UIButton *bottomButton; @end
2)創(chuàng)建屬性到最頂部
@implementation broadcastLiveViewController
- (void)viewDidLoad {
[super viewDidLoad];
CGRect clientRect = [UIScreen mainScreen].bounds;
_livesListTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, clientRect.size.width, clientRect.size.height-65) style:UITableViewStylePlain];
[self.view addSubview:_livesListTable];
_livesListTable.delegate = self;
_livesListTable.dataSource = self;
self.bottomButton = [UIButton buttonWithType:UIButtonTypeCustom];
self.bottomButton.frame = CGRectMake(kScreenW - 80, kScreenH - 140, 60, 60);
[self.bottomButton setBackgroundImage:[UIImage imageNamed:@"recordLive"] forState:UIControlStateNormal];
[self.bottomButton addTarget:self action:@selector(onTapLiveBtn) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.bottomButton];
3)實(shí)現(xiàn)按鈕事件
- (void)onTapLiveBtn
{
NSLog(@"點(diǎn)擊底部按鈕");
}
接下來(lái)介紹第二種方法:
1)創(chuàng)建一個(gè)window,button屬性避免window被釋放
//屏幕寬 #define kScreenW [UIScreen mainScreen].bounds.size.width //屏幕高 #define kScreenH [UIScreen mainScreen].bounds.size.height @interface broadcastLiveViewController ()<UITableViewDataSource, UITableViewDelegate> @property(strong,nonatomic)UIWindow *window; @property(strong,nonatomic)UIButton *button; @end
2)創(chuàng)建window和button
默認(rèn)的情況下系統(tǒng)只有一個(gè)window這時(shí)我們需要設(shè)置windowLevel
window不用添加在任何視圖上
- (void)createButton{
_button = [UIButton buttonWithType:UIButtonTypeCustom];
[_button setBackgroundImage:[UIImage imageNamed:@"recordLive"] forState:UIControlStateNormal];
_button.frame = CGRectMake(0, 0, 60, 60);
[_button addTarget:self action:@selector(onTapLiveBtn) forControlEvents:UIControlEventTouchUpInside];
_window = [[UIWindow alloc]initWithFrame: CGRectMake(kScreenW - 80, kScreenH - 80, 60, 60);];
_window.windowLevel = UIWindowLevelAlert+1;
_window.backgroundColor = [UIColor redColor];
_window.layer.cornerRadius = 30;
_window.layer.masksToBounds = YES;
[_window addSubview:_button];
[_window makeKeyAndVisible];//關(guān)鍵語(yǔ)句,顯示window
}
3)延時(shí)加載window,注意我們需要在rootWindow創(chuàng)建完成之后再創(chuàng)建這個(gè)懸浮的按鈕
- (void)viewDidLoad {
[super viewDidLoad];
[self performSelector:@selector(createButton) withObject:nil afterDelay:1];
}
4)實(shí)現(xiàn)按鈕事件
- (void)onTapLiveBtn
{
NSLog(@"點(diǎn)擊底部按鈕");
}
注意::最后再添加一個(gè)小功能,使tableview上下滑動(dòng)的時(shí)候,按鈕動(dòng)畫(huà)效果的出現(xiàn)和消失,在這里是上拉消失,下拽出現(xiàn)
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
if (scrollView.contentOffset.y > self.offsetY && scrollView.contentOffset.y > 0) {//向上滑動(dòng)
//按鈕消失
[UIView transitionWithView:self.bottomButton duration:0.1 options:UIViewAnimationOptionTransitionNone animations:^{
self.bottomButton.frame = CGRectMake(kScreenW - 80, kScreenH - 65, 60, 60);
} completion:NULL];
}else if (scrollView.contentOffset.y < self.offsetY ){//向下滑動(dòng)
//按鈕出現(xiàn)
[UIView transitionWithView:self.bottomButton duration:0.1 options:UIViewAnimationOptionTransitionNone animations:^{
self.bottomButton.frame = CGRectMake(kScreenW - 80, kScreenH - 140, 60, 60);
} completion:NULL];
}
self.offsetY = scrollView.contentOffset.y;//將當(dāng)前位移變成緩存位移
}
以上所述是小編給大家介紹的Android開(kāi)發(fā)中在TableView上添加懸浮按鈕的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- Android自定義可拖拽的懸浮按鈕DragFloatingActionButton
- Android中FloatingActionButton實(shí)現(xiàn)懸浮按鈕實(shí)例
- Android實(shí)現(xiàn)系統(tǒng)級(jí)懸浮按鈕
- Android懸浮按鈕點(diǎn)擊返回頂部FloatingActionButton
- Android開(kāi)發(fā)模仿qq視頻通話(huà)懸浮按鈕(實(shí)例代碼)
- Android利用WindowManager生成懸浮按鈕及懸浮菜單
- Android開(kāi)發(fā)懸浮按鈕 Floating ActionButton的實(shí)現(xiàn)方法
- Android利用懸浮按鈕實(shí)現(xiàn)翻頁(yè)效果
- 圣誕節(jié),寫(xiě)個(gè)程序練練手————Android 全界面懸浮按鈕實(shí)現(xiàn)
- Android懸浮按鈕的使用方法
相關(guān)文章
Android Studio Gradle插件版本與Gradle版本之間的對(duì)應(yīng)關(guān)系
今天小編就為大家分享一篇關(guān)于Android Studio Gradle插件版本與Gradle版本之間的對(duì)應(yīng)關(guān)系,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Android應(yīng)用圖標(biāo)上的小紅點(diǎn)Badge實(shí)踐代碼
本篇文章主要介紹了Android應(yīng)用圖標(biāo)上的小紅點(diǎn)Badge實(shí)踐代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07
Android實(shí)現(xiàn)帶有邊框的ListView和item的方法
這篇文章主要介紹了Android實(shí)現(xiàn)帶有邊框的ListView和item的方法,結(jié)合實(shí)例形式分析了ListView和item四周添加邊框的實(shí)現(xiàn)步驟與相關(guān)技巧,需要的朋友可以參考下2016-07-07
百度地圖API提示230 錯(cuò)誤app scode碼校驗(yàn)失敗的解決辦法
筆者近2天在 Android Studio上玩了一下百度地圖,碰到了常見(jiàn)的"230錯(cuò)誤 APP Scode校驗(yàn)失敗",下面我來(lái)介紹一下具體的解決辦法2016-01-01
Android開(kāi)發(fā)中怎樣調(diào)用系統(tǒng)Email發(fā)送郵件(多種調(diào)用方式)
在Android中調(diào)用其他程序進(jìn)行相關(guān)處理,幾乎都是使用的Intent,所以,Email也不例外,所謂的調(diào)用Email,只是說(shuō)Email可以接收Intent并做這些事情2013-06-06
Android中Fragment相互切換間不被回收的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Android中Fragment相互切換間不被回收的實(shí)現(xiàn)方法,文中給出了詳細(xì)的示例代碼和注釋供大家參考學(xué)習(xí),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-08-08

