ดังนั้นฉันจึงเริ่มใช้ Snackbar ใหม่ใน Design Support Library แต่ฉันพบว่าเมื่อคุณกำหนด "android: textColor" ในธีมของคุณจะมีผลกับสีข้อความของสแน็คบาร์ เห็นได้ชัดว่าเป็นปัญหาหากสีข้อความหลักของคุณมืด
มีใครรู้วิธีแก้ปัญหานี้หรือมีคำแนะนำว่าฉันควรระบายสีข้อความอย่างไร
แก้ไขมกราคม 2560: (หลังคำตอบ)
แม้ว่าจะมีวิธีแก้ไขปัญหาแบบกำหนดเองบางอย่างเพื่อแก้ไขปัญหาด้านล่าง แต่ก็น่าจะดีที่จะจัดหาวิธีที่ถูกต้องในการจัดธีม Snackbars
ประการแรกคุณอาจไม่ควรกำหนดandroid:textColor
ธีมของคุณเลย (เว้นแต่คุณจะทราบขอบเขตของสิ่งที่ใช้ธีม) สิ่งนี้จะกำหนดสีข้อความของทุกมุมมองที่เชื่อมต่อกับธีมของคุณ หากคุณต้องการกำหนดสีข้อความในมุมมองที่ไม่ใช่ค่าเริ่มต้นให้ใช้android:primaryTextColor
และอ้างอิงแอตทริบิวต์นั้นในมุมมองแบบกำหนดเองของคุณ
อย่างไรก็ตามสำหรับการนำธีมไปใช้Snackbar
โปรดอ้างอิงคู่มือคุณภาพนี้จากเอกสารของบุคคลที่สาม: http://www.materialdoc.com/snackbar/ (ปฏิบัติตามการใช้ธีมแบบเป็นโปรแกรมเพื่อให้มันไม่ต้องพึ่งพารูปแบบ xml)
สำหรับการอ้างอิง:
// create instance
Snackbar snackbar = Snackbar.make(view, text, duration);
// set action button color
snackbar.setActionTextColor(getResources().getColor(R.color.indigo));
// get snackbar view
View snackbarView = snackbar.getView();
// change snackbar text color
int snackbarTextId = android.support.design.R.id.snackbar_text;
TextView textView = (TextView)snackbarView.findViewById(snackbarTextId);
textView.setTextColor(getResources().getColor(R.color.indigo));
// change snackbar background
snackbarView.setBackgroundColor(Color.MAGENTA);
(คุณสามารถสร้างเลย์เอาต์Snackbar
แบบกำหนดเองของคุณเองได้เช่นกันดูลิงก์ด้านบนหากวิธีนี้รู้สึกว่าแฮ็คเกินไปและคุณต้องการวิธีที่เชื่อถือได้อย่างแน่นอนเพื่อให้ Snackbar ที่กำหนดเองของคุณอยู่ได้นานผ่านการอัปเดตไลบรารีการสนับสนุนที่เป็นไปได้)
หรือดูคำตอบด้านล่างสำหรับคำตอบที่คล้ายกันและอาจเร็วกว่าเพื่อแก้ปัญหาของคุณ
android:textColorPrimary