日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android自定義選項卡切換效果

瀏覽:59日期:2022-09-18 09:30:57

本文實例為大家分享了Android自定義選項卡切換效果的具體代碼,供大家參考,具體內容如下

一、實際使用的效果

Android自定義選項卡切換效果

二、自定義可切換的標題欄

1、布局

<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='232dp' android:layout_height='32dp' android:background='@drawable/leave_back_tab_bg_selector' android:orientation='horizontal'> <TextViewandroid: android:layout_width='match_parent'android:layout_height='match_parent'android:background='@drawable/leave_back_button_bg_selector'android:gravity='center'android:layout_weight='1'android:textColor='@color/white'android:textSize='14sp'android:clickable='true'android:focusable='true'android:focusableInTouchMode='true'android:text='@string/leave_crews_num'/> <TextViewandroid: android:layout_width='match_parent'android:layout_height='match_parent'android:background='@drawable/leave_back_button_bg_selector'android:gravity='center'android:layout_weight='1'android:textColor='@color/white'android:textSize='14sp'android:clickable='true'android:focusable='true'android:focusableInTouchMode='true'android:text='@string/back_crews_num'/></LinearLayout>

leave_back_button_bg_selector:

<?xml version='1.0' encoding='utf-8'?><selector xmlns:android='http://schemas.android.com/apk/res/android'> <item><shape android:shape='rectangle'> <stroke android: android:color='#328BDD' /> <corners android:radius='3dp' /> <solid android:color='@color/transparent' /></shape> </item></selector>

leave_back_button_bg_selector

<?xml version='1.0' encoding='utf-8'?><selector xmlns:android='http://schemas.android.com/apk/res/android'> <item android:state_focused='true'><shape android:shape='rectangle'> <stroke android: android:color='#328BDD' /> <corners android:radius='3dp' /> <solid android:color='#328BDD' /></shape> </item> <item><shape android:shape='rectangle'> <stroke android: android:color='@color/transparent' /> <corners android:radius='3dp' /> <solid android:color='@color/transparent' /></shape> </item></selector>

2、控件封裝

import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.LinearLayout;import android.widget.TextView;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.OnFocusChange;public class LeaveBackTitleTabView extends LinearLayout { public final static int INDEX_LEAVE = 1; public final static int INDEX_BACK = 2; @BindView(R.id.tvBackNum) TextView tvBackNum; @BindView(R.id.tvLeaveNum) TextView tvLeaveNum; private Context mContext; private ITabChangeListener tabChangeListener; public void setTabChangeListener(ITabChangeListener tabChangeListener) {this.tabChangeListener = tabChangeListener; } public LeaveBackTitleTabView(Context context) {super(context);mContext = context; } public LeaveBackTitleTabView(Context context, AttributeSet attrs) {super(context, attrs);mContext = context;View view = (View) LayoutInflater.from(context).inflate(R.layout.view_leave_back_list_tab, this, true);ButterKnife.bind(view); } @OnFocusChange({R.id.tvLeaveNum,R.id.tvBackNum}) public void doFocusChanged(View view){switch(view.getId()){ case R.id.tvLeaveNum :if(tabChangeListener != null){ tabChangeListener.onTabChanged(INDEX_LEAVE);}break; case R.id.tvBackNum:if(tabChangeListener != null){ tabChangeListener.onTabChanged(INDEX_BACK);}break;} } public void setCrewsNum(int leaveNum,int backNum){tvLeaveNum.setText(String.format(getResources().getString(R.string.leave_crews_num), String.valueOf(leaveNum)));tvBackNum.setText(String.format(getResources().getString(R.string.back_crews_num), String.valueOf(backNum)));if(leaveNum > 0 && backNum > 0){ tvLeaveNum.requestFocus();}else if(leaveNum > 0 && backNum == 0){ tvLeaveNum.setClickable(true); tvLeaveNum.setFocusable(true); tvBackNum.setClickable(false); tvBackNum.setFocusable(false); tvLeaveNum.requestFocus();}else if(leaveNum == 0 && backNum > 0){ tvLeaveNum.setClickable(false); tvLeaveNum.setFocusable(false); tvBackNum.setClickable(true); tvBackNum.setFocusable(true); tvBackNum.requestFocus();}else{ tvLeaveNum.setClickable(false); tvLeaveNum.setFocusable(false); tvBackNum.setClickable(false); tvBackNum.setFocusable(false);} } /** * TAB切換時的listener */ public interface ITabChangeListener{public void onTabChanged(int index); }}

3、使用方法

<com.hisign.ship_terminal_hs518.view.LeaveBackTitleTabView android:layout_width='232dp' android:layout_height='32dp' android:layout_marginTop='10dp' android:visibility='gone' android:id='@+id/lttTitle'></com.hisign.ship_terminal_hs518.view.LeaveBackTitleTabView>

4、注冊回調事件(一般在UI界面上進行注冊)

/** * 離船和在船船員信息列表 */ private LeaveBackTitleTabView.ITabChangeListener iTabChangeListener = new LeaveBackTitleTabView.ITabChangeListener() {@Overridepublic void onTabChanged(int index) { switch (index) {case LeaveBackTitleTabView.INDEX_LEAVE: // 界面上點擊了離船 ll_leave_crews.setVisibility(View.VISIBLE); ll_back_crews.setVisibility(View.GONE); break;case LeaveBackTitleTabView.INDEX_BACK: // 界面上點擊了在船 ll_back_crews.setVisibility(View.VISIBLE); ll_leave_crews.setVisibility(View.GONE); break; }} };

5、注意事項:

(1)、控件需要能響應點擊事件,同時切換到某一選項時,該選項卡需要顯示選中的狀態,所以在控件中需要指定:

android:clickable='true' android:focusable='true' android:focusableInTouchMode='true'

但是這樣設置了之后,控件就在點擊時就不能在點擊的第一下響應onClick點擊事件,我的做法是響應onFouceChange事件

(2)、為啥這樣設置,在點擊的第一下就不響應onClick了呢?源碼中顯示w 在 onTouchEvent() 中的 MotionEvent.ACTION_UP 中對focus做了處理, 如果View focusableInTouchMode 是true, 并且當前沒有獲得焦點, 那么會嘗試獲取焦點, 并且不會調用 performClick()。

public boolean onTouchEvent(MotionEvent event) { ... if (((viewFlags & CLICKABLE) == CLICKABLE || (viewFlags & LONG_CLICKABLE) == LONG_CLICKABLE) || (viewFlags & CONTEXT_CLICKABLE) == CONTEXT_CLICKABLE) { switch (action) { case MotionEvent.ACTION_UP: boolean prepressed = (mPrivateFlags & PFLAG_PREPRESSED) != 0; if ((mPrivateFlags & PFLAG_PRESSED) != 0 || prepressed) { boolean focusTaken = false; if (isFocusable() && isFocusableInTouchMode() && !isFocused()) { focusTaken = requestFocus(); } if (prepressed) { setPressed(true, x, y);} if (!mHasPerformedLongPress && !mIgnoreNextUpEvent) { removeLongPressCallback(); if (!focusTaken) { if (mPerformClick == null) { mPerformClick = new PerformClick(); } if (!post(mPerformClick)) { performClick(); } } } ...}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
你懂的国产精品| 一区二区三区国产在线| 久久精品超碰| 日韩精品久久理论片| 蜜桃久久av一区| 亚洲一区二区三区无吗| 免费观看在线综合| 亚洲影院天堂中文av色| 中文字幕日本一区| 日本vs亚洲vs韩国一区三区二区| 亚洲精品亚洲人成在线观看| 天堂俺去俺来也www久久婷婷| 亚洲日本久久| 美女91精品| 亚洲小说春色综合另类电影| 亚洲精选91| 久久精品72免费观看| 久久av中文| 国产精品yjizz视频网| 久久亚洲在线| 香蕉久久夜色精品国产| 亚洲综合图色| 国产三级一区| 国产一区二区三区网| 久久香蕉国产| 蜜桃一区二区三区在线观看| 日本不卡不码高清免费观看| 免费视频一区二区三区在线观看| 精品视频一区二区三区四区五区| 久久精选视频| 日本在线视频一区二区| 国产欧美日韩在线观看视频| 美女高潮久久久| 日韩一区二区三区免费| 国产精品人人爽人人做我的可爱| 婷婷精品在线| 粉嫩av一区二区三区四区五区| 日韩精品欧美| 亚洲综合福利| 国产999精品在线观看| 日韩高清成人| 免费人成黄页网站在线一区二区 | 日韩在线二区| 樱桃成人精品视频在线播放| 日韩精品久久久久久久软件91| 国内精品伊人| 巨乳诱惑日韩免费av| 国产视频一区二| 中文字幕人成乱码在线观看 | 久久一区精品| 一本一本久久| 91麻豆精品激情在线观看最新| 国精品产品一区| 亚洲一区观看| 久久精品系列| 中文字幕日韩亚洲| 欧产日产国产精品视频| 综合国产精品| jizzjizz中国精品麻豆| 男女性色大片免费观看一区二区| 欧美国产先锋| 亚洲欧美日韩精品一区二区| 久久精品天堂| 最新国产精品| 日韩毛片在线| 国产精品男女| 欧美在线综合| 精品网站999| 一区二区电影| 成人啊v在线| 国产精品久久久免费| 亚洲在线成人| 欧美亚洲日本精品| 欧美日韩亚洲一区三区| 午夜精品久久久久久久久久蜜桃| 日韩成人av影视| 亚洲欧美一区在线| 麻豆久久久久久久| 亚洲综合婷婷| 激情欧美亚洲| 日韩av专区| 欧美亚洲tv| 亚洲精品va| 色在线视频观看| 日韩精品1区2区3区| 宅男在线一区| 91免费精品| 婷婷综合一区| 91久久久精品国产| 在线手机中文字幕| 麻豆91在线播放| 欧美亚洲tv| 丝袜美腿亚洲色图| 亚洲韩日在线| 日韩精品诱惑一区?区三区| 欧美日韩一区二区三区不卡视频| 亚洲欧美日韩专区| 午夜精品久久久久久久久久蜜桃| 久久99国产精品视频| 欧美亚洲免费| 日韩一区二区三区精品| 夜夜嗨一区二区| 不卡中文字幕| 国产二区精品| 米奇777超碰欧美日韩亚洲| 日韩国产网站| 久久电影tv| 精品国产精品国产偷麻豆| 欧美日韩亚洲国产精品| 日本伊人久久| 日本不卡视频在线观看| 蜜桃久久久久久久| 成人av二区| 九色精品91| 亚洲天堂黄色| 欧美日中文字幕| 欧美日韩一区二区三区视频播放| 少妇精品导航| 国产专区一区| 国产精品美女久久久| 亚洲深夜av| 久久亚洲影院| 亚洲欧洲专区| 91在线成人| 国产欧美日韩综合一区在线播放| 久久狠狠久久| 国产欧美一区二区三区国产幕精品 | 老司机精品视频网| 国产精品男女| 久久久91麻豆精品国产一区| 免费亚洲婷婷| 色乱码一区二区三区网站| 精品国产黄a∨片高清在线| 福利一区二区| 欧美不卡高清一区二区三区| 激情自拍一区| 免播放器亚洲| 在线看片日韩| 久久国产日韩欧美精品| 免费看一区二区三区| 国产v日韩v欧美v| 久久理论电影| 国产日韩综合| 日本不卡一区二区三区| 国产精品久久久一区二区| 美女视频免费精品| 日韩一区电影| 亚洲一区二区免费看| 日韩va亚洲va欧美va久久| 欧美激情一区| 久久中文字幕av| 亚洲精品四区| 国产精品久久久久久久免费软件 | 亚洲制服一区| 国产精品久久久久久妇女| 国产不卡一区| 欧美91精品| 中文字幕av一区二区三区四区| 国产香蕉精品| 色一区二区三区四区| 136国产福利精品导航网址| 视频一区欧美日韩| 国产精品亚洲产品| 亚洲精品国产嫩草在线观看 | 国产不卡av一区二区| 成人看片网站| 丝袜亚洲另类欧美| 国产精久久久| 欧美日韩在线二区| 日韩精品三区四区| 中文一区一区三区高中清不卡免费| 免费视频国产一区| 日本久久一区| 亚洲一级少妇| 午夜性色一区二区三区免费视频| 国产中文欧美日韩在线| 国内亚洲精品| 91福利精品在线观看| 国产a亚洲精品| 免费在线观看一区二区三区| 久久精品国产999大香线蕉| 不卡一区综合视频| 国产精品一区二区中文字幕| 欧美日韩在线播放视频| 日本电影久久久| 神马午夜在线视频| 日韩福利视频一区| 欧产日产国产精品视频| 亚洲人亚洲人色久| 日韩免费久久| 日本99精品| 久久久亚洲一区| 97久久精品| 伊人久久大香线蕉av不卡| 青青草91久久久久久久久| 国产91久久精品一区二区| 国产精品探花在线观看| 91精品二区| 国产在线一区不卡| 亚洲精品九九|