一周干貨總結-(控件狀態(tài)異常鸯旁、右優(yōu)先的一種布局、Fragment動態(tài)切換量蕊、RcyclerView異常處理)

控件狀態(tài)異常

當改變頂部Actionbar布局背景顏色的alpha值铺罢,以達到Actionbar不透明和全透明效果時,發(fā)現(xiàn)其它所有用到這個顏色頁面狀態(tài)都變了残炮。

//使用如下
mActionbarView.getBackground().setAlpha(255);
//mActionbarView的布局如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/action_bar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/titlebar_height"
    android:orientation="horizontal"
    android:background="@color/white"
    android:baselineAligned="false">
</LinearLayout>

可以看到我們給mActionbarView設置了白色的背景色韭赘,可問題恰恰就出在這個white的背景色上。
好吧吉殃,開始解釋原因辞居。
在布局中,多個控件共用某一個資源的時候瓦灶,這些控件會共用一個狀態(tài),比如ColorState抱完。如果你改變了一個控件贼陶,其它的控件都會接收到相同的通知。所以才會出現(xiàn)上面描述的問題巧娱。
那么問題來了碉怔,有辦法解決嗎?答案是肯定的禁添。
使用mutate()方法使控件狀態(tài)不定撮胧,這樣不定狀態(tài)的控件就不會共享自己的狀態(tài)。代碼如下

mActionbarView.getBackground().mutate().setAlpha(255);

右優(yōu)先的一種布局

這是一種項目中很常用的需求老翘,需要布局自適應寬度芹啥,并且要右側的View優(yōu)先顯示完,左側的View如果一行顯示不完铺峭,則以省略號表示墓怀。
不知道有沒有描述清楚,這中布局其實很不好實現(xiàn)卫键,右側的View需要自適應寬度傀履,并且要優(yōu)先顯示完,然后才顯示左邊的View的內(nèi)容莉炉,左邊的View顯示不完了钓账,則省略號碴犬,并且左右的View是緊貼著并且自適應寬度的。大家可以想一想該怎么實現(xiàn)這種布局官扣?
好吧翅敌,如果你想不出來,我來告訴你答案吧惕蹄。

<RelativeLayout
    android:id="@+id/rl_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="16dp"
    android:layout_toLeftOf="@id/tv_follow"
    android:layout_toRightOf="@id/avatar"
    android:gravity="fill">
    <TextView
        android:id="@+id/tv_tag"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        android:maxLines="1"
        android:textColor="@color/black" 
        android:textSize="@dimen/text_size_24px" />
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/tv_tag"
        android:ellipsize="end"
        android:maxLines="1"
        android:textColor="@color/black"
        android:textSize="@dimen/text_size_32px"
        android:textStyle="bold" />
</RelativeLayout>

答案就是實用android:gravity="fill"這個屬性蚯涮,然后先顯示右側的View,再讓左側的View布局在右側View的左方即可卖陵,你會發(fā)現(xiàn)神奇的實現(xiàn)了這種布局效果遭顶。

Fragment動態(tài)切換

關于Fragment的replace方法和add方法
動態(tài)切換顯示 Activity 中的多個 Fragment 時,可以通過 replace() 實現(xiàn)泪蔫,也可以 hide() 和 show() 方法實現(xiàn)棒旗。事實上,我們更傾向于使用后者撩荣,因為 replace() 方法不會保留 Fragment 的狀態(tài)铣揉,也就是說諸如 EditText 內(nèi)容輸入等用戶操作在 remove() 時會消失。當然餐曹,如果你不想保留用戶操作的話逛拱,可以選擇前者,視情況而定台猴。

FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.hide(firstStepFragment);
if (secondStepFragment==null){
    ft.add(R.id.fl_content, secondStepFragment);
}else {
    ft.show(secondStepFragment);
}
ft.addToBackStack(null);
ft.commit();

通過 addToBackStack() 保存當前事務
當用戶按下返回鍵時朽合,如果回退棧中保存有之前的事務,便會執(zhí)行事務回退饱狂,而不是 finish 掉當前 Activity曹步。
這種方式用在注冊登錄涉及多個頁面的時候會非常合適

RecyclerView異常處理

這周在新建一個Activity中使用Recyclerview做一個很簡單的字符串展示的時候,出現(xiàn)了一個奇葩的異常休讳。The specified child already has a parent. You must call removeView() on the child's parent first讲婚。
然后指向項目基類重寫的一個Layout的layout方法中,百思不得騎姐俊柔,找不到哪里出錯了磺樱,因為是剛接手的項目,之前版本用到了右滑關閉頁面的一個庫作為基類婆咸,所以想到會不會跟這個有關系,但是比較其它的Activity排除了這種猜測芜辕,最終發(fā)現(xiàn)是自己犯了個小錯誤尚骄。
在RecyclerView的Adapter中,onCreateViewHolder的時候attach了parent為true導致的侵续。

when inflating you shouldn't attach the view to its parent. you wrote:
View v = inflater.inflate(R.layout.my_text_view, parent, true);
which should be :
View v = inflater.inflate(R.layout.my_text_view, parent, false);

代碼修改為如下完美運行倔丈,瞬間石化

@Override
public UserDetailViewHolder onCreateDataItemViewHolder(ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user_detail,
            parent, false);
    UserDetailViewHolder userDetailViewHolder = new UserDetailViewHolder(view);
    return userDetailViewHolder;
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末憨闰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子需五,更是在濱河造成了極大的恐慌鹉动,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宏邮,死亡現(xiàn)場離奇詭異泽示,居然都是意外死亡,警方通過查閱死者的電腦和手機蜜氨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門械筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人飒炎,你說我怎么就攤上這事埋哟。” “怎么了郎汪?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵赤赊,是天一觀的道長。 經(jīng)常有香客問我煞赢,道長抛计,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任耕驰,我火速辦了婚禮爷辱,結果婚禮上,老公的妹妹穿的比我還像新娘朦肘。我一直安慰自己饭弓,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布媒抠。 她就那樣靜靜地躺著弟断,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趴生。 梳的紋絲不亂的頭發(fā)上阀趴,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音苍匆,去河邊找鬼刘急。 笑死,一個胖子當著我的面吹牛浸踩,可吹牛的內(nèi)容都是我干的叔汁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼据块!你這毒婦竟也來了码邻?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤另假,失蹤者是張志新(化名)和其女友劉穎像屋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體边篮,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡己莺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了苟耻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篇恒。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凶杖,靈堂內(nèi)的尸體忽然破棺而出胁艰,到底是詐尸還是另有隱情,我是刑警寧澤智蝠,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布腾么,位于F島的核電站,受9級特大地震影響杈湾,放射性物質(zhì)發(fā)生泄漏解虱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一漆撞、第九天 我趴在偏房一處隱蔽的房頂上張望殴泰。 院中可真熱鬧,春花似錦浮驳、人聲如沸悍汛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽离咐。三九已至,卻和暖如春奉件,著一層夾襖步出監(jiān)牢的瞬間宵蛀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工县貌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留术陶,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓煤痕,卻偏偏與公主長得像瞳别,于是被迫代替她去往敵國和親征候。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,737評論 25 707
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,721評論 22 665
  • Fragment概述 Fragment是Activity中用戶界面的一個行為或者說是一部分祟敛。主要是支持大屏幕上動態(tài)...
    wangling90閱讀 11,524評論 5 76
  • 在小時候,因為網(wǎng)絡還沒有普及兆解,父親每天都要閱讀報紙馆铁,這也成為了他生活的一個習慣。 每天早上锅睛,一有時間便會一邊看著報...
    木木大人147閱讀 270評論 0 2
  • 最近江歌事件比較熱埠巨,大眾呼聲也比較一致吧,希望江媽心安--判處殺人兇手死刑现拒,也給冷漠之人江歌女友束以強烈道德...
    心常閱讀 163評論 0 2