คำถามติดแท็ก android-appcompat

แพ็กเกจ App Compat Support Library ประกอบด้วยไลบรารีหลายไลบรารีที่สามารถรวมไว้ในแอปพลิเคชันของคุณ ไลบรารีเหล่านี้แต่ละแห่งรองรับเวอร์ชันแพลตฟอร์ม Android และชุดคุณสมบัติที่เฉพาะเจาะจง

8
การสร้าง SearchView ที่ดูเหมือนแนวทางการออกแบบวัสดุ
ตอนนี้ฉันกำลังอยู่ระหว่างการเรียนรู้วิธีแปลงแอปเป็นดีไซน์ Material และตอนนี้ฉันติดขัดเล็กน้อย ฉันได้เพิ่มแถบเครื่องมือแล้วและฉันได้ทำให้ลิ้นชักการนำทางของฉันซ้อนทับเนื้อหาทั้งหมด ตอนนี้ฉันกำลังพยายามสร้างการค้นหาที่ขยายได้ซึ่งดูเหมือนในหลักเกณฑ์ของวัสดุ : นี่คือสิ่งที่ฉันมีในตอนนี้และฉันไม่สามารถหาวิธีทำให้มันเป็นเหมือนข้างต้น: นี่คือ xml เมนูของฉัน: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="Search" app:showAsAction="always" app:actionViewClass="android.support.v7.widget.SearchView" /> </menu> ได้ผลฉันได้รับรายการเมนูที่ขยายไปยัง SearchView และฉันสามารถกรองรายการของฉันได้ดี มันดูไม่เหมือนภาพที่ 1 เลย ผมพยายามที่จะใช้MenuItemCompat.setOnActionExpandListener()ในR.id.action_searchดังนั้นฉันสามารถเปลี่ยนไอคอนที่บ้านกับลูกศรย้อนกลับ แต่ที่ดูเหมือนจะไม่ทำงาน ไม่มีอะไรเกิดขึ้นในผู้ฟัง แม้ว่าจะได้ผล แต่ก็ยังไม่ใกล้เคียงกับภาพที่ 1 มากนัก ฉันจะสร้าง SearchView ในแถบเครื่องมือ appcompat ใหม่ที่ดูเหมือนหลักเกณฑ์วัสดุได้อย่างไร

15
แสดงไอคอนในแถบการดำเนินการ / แถบเครื่องมือด้วย AppCompat-v7 21
ฉันลองสิ่งเหล่านี้ - แต่ยังไม่เห็นไอคอนเหมือนก่อน: getSupportActionBar().setLogo(R.drawable.ic_launcher); getSupportActionBar().setDisplayUseLogoEnabled(true); getSupportActionBar().setIcon(R.drawable.ic_launcher); ดูเหมือนว่าจะใช้งานได้เมื่อฉันใช้แถบเครื่องมือแบบกำหนดเอง - แต่นั่นจะบังคับให้ฉันแตะเลย์เอาต์ทั้งหมดมีวิธีที่ดีกว่านี้ไหม

14
วิธีเพิ่มสีของปุ่มโดยทางโปรแกรม
ในไลบรารี AppCompat ใหม่เราสามารถย้อมสีปุ่มด้วยวิธีนี้: <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/follow" android:id="@+id/button_follow" android:backgroundTint="@color/blue_100" /> ฉันจะตั้งค่าสีของปุ่มโดยใช้โปรแกรมในรหัสของฉันได้อย่างไร? โดยพื้นฐานแล้วฉันกำลังพยายามใช้การระบายสีตามเงื่อนไขของปุ่มตามข้อมูลที่ผู้ใช้ป้อน

3
AppCompatActivity.onCreate สามารถเรียกได้จากภายในกลุ่มไลบรารีเดียวกันเท่านั้น
หลังจากอัปเกรดเป็น appcompat 25.1.0ฉันเริ่มได้รับข้อผิดพลาดเกี่ยวกับสาย ในรหัสของฉัน: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ฉันได้รับข้อผิดพลาดผ้าสำลี: AppCompatActivity.onCreate can only be called from within the same library group (groupId=com.android.support) จะป้องกันพฤติกรรมดังกล่าวได้อย่างไร?

8
ฉันจะแก้ไขสีระลอกเมื่อใช้? attr / selectableItemBackground เป็นพื้นหลังได้อย่างไร?
ฉันเคยเห็นคำถาม SO และพวกเขาให้วิธีการที่เป็นไปได้เพื่อบรรลุสิ่งที่ฉันต้องการ ตัวอย่างเช่น: ใช้colorControlHighlightแอตทริบิวต์ใน styles.xml นี่คือสไตล์ของฉัน -v21.xml: <style name="SelectableItemBackground"> <item name="android:colorControlHighlight">#5677FC</item> <item name="android:background">?attr/selectableItemBackground</item> </style> และวิดเจ็ตของฉัน: <TextView android:id="@+id/tv_take_photo_as_bt" android:layout_width="280dp" android:layout_height="48dp" android:text="@string/act_take_photo" style="@style/SelectableItemBackground"/> และไม่ได้ผล ฉันยังพยายามเพิ่มparent="Theme.AppCompatในสไตล์ "SelectableItemBackground" หรือเปลี่ยนเป็นcolorControlHighlight(no android: prefix)"หรือเปลี่ยน?android:attr/selectableItemBackgroundเป็นก็ไม่มีประโยชน์ ใช้backgroundTintแอตทริบิวต์ในเค้าโครง ดังนั้นผมจึงเพิ่มของฉันandroid:backgroundTint="#5677FC" TextViewยังไม่มีประโยชน์. จากนั้นผมก็พยายามที่จะเปลี่ยนandroid:backgroundTintModeไปsrc_inและsrc_atopและพวกเขาไม่เคยสร้างความแตกต่าง ดังนั้นฉันจะเปลี่ยนสีของระลอกคลื่นได้อย่างไรเมื่อใช้?attr/selectableItemBackgroundเป็นพื้นหลัง ฉันเน้นเฉพาะ Lollipop ขึ้นไปเท่านั้น ขอบคุณล่วงหน้า!

7
ฉันจะสไตล์ appcompat-v7 Toolbar เช่น Theme.AppCompat.Light.DarkActionBar ได้อย่างไร
ฉันพยายามสร้างรูปลักษณ์Theme.AppCompat.Light.DarkActionBarใหม่ด้วยแถบเครื่องมือไลบรารีสนับสนุนใหม่ ถ้าฉันเลือกTheme.AppCompat.Lightแถบเครื่องมือของฉันจะสว่างและถ้าฉันเลือกTheme.AppCompatมันจะมืด (ในทางเทคนิคคุณต้องใช้.NoActionBarเวอร์ชัน แต่เท่าที่ฉันสามารถบอกได้ข้อแตกต่างเพียงอย่างเดียวคือ <style name="Theme.AppCompat.NoActionBar"> <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> </style> ตอนนี้ไม่มีTheme.AppCompat.Light.DarkActionBarแต่ไร้เดียงสาฉันคิดว่ามันดีพอที่จะทำด้วยตัวเอง <style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar"> <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> </style> อย่างไรก็ตามแถบเครื่องมือของฉันยังคงเป็นLightธีม ตอนนี้ฉันใช้เวลาหลายชั่วโมงในการลองใช้ชุดค่าผสมที่แตกต่างกันในการผสมธีมมืด (ฐาน) และธีมแสง แต่ฉันไม่พบชุดค่าผสมที่จะทำให้ฉันมีพื้นหลังที่สว่างในทุกสิ่งยกเว้นแถบเครื่องมือ มีวิธีการAppCompat.Light.DarkActionBarดูด้วยการนำเข้าandroid.support.v7.widget.Toolbarหรือไม่?


27
แถบสถานะจะเปลี่ยนเป็นสีขาวและไม่แสดงเนื้อหาด้านหลัง
ฉันกำลังทดลองใช้ AppCompat บน Marshmallow และฉันต้องการให้แถบสถานะโปร่งใส แต่มันจะเปลี่ยนเป็นสีขาว ฉันได้ลองใช้วิธีแก้ปัญหาสองสามวิธี แต่ไม่ได้ผลสำหรับฉัน ( แถบสถานะโปร่งใสไม่ทำงานกับ windowTranslucentNavigation = "false" , Lollipop: วาดด้านหลัง statusBar โดยกำหนดสีเป็นโปร่งใส ) นี่คือรหัสที่เกี่ยวข้อง styles.xml ของฉัน <style name="Bacon" parent="Theme.Bacon"/> <style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="colorAccent">@color/theme_accent</item> <item name="windowActionBar">false</item> <item name="windowActionBarOverlay">true</item> <item name="windowNoTitle">true</item> <item name="android:windowBackground">@color/background_material_light</item> </style> <style name="Theme.Bacon.Detail" parent="Bacon"/> v21 <style name="Bacon" parent="Theme.Bacon"> …

5
วิธีใช้ DrawerArrowToggle จากไลบรารี Android appcompat v7 21
ตอนนี้ Android 5.0 เปิดตัวแล้วฉันสงสัยว่าจะใช้ไอคอนแถบแอคชั่นแบบเคลื่อนไหวได้อย่างไร ห้องสมุดนี้ที่นี่ดำเนินการมันที่ดีสำหรับฉัน แต่เนื่องจากห้องสมุด v7 AppCompat มันมีวิธีการที่สามารถจะดำเนินการ? ไลบรารีอ้างอิงใน themes.xml <item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item> ภายใต้รูปแบบนี้ <style name="Base.V7.Theme.AppCompat" parent="Platform.AppCompat"> อัปเดต ฉันได้รับสิ่งนี้โดยใช้ v7 DrawerToggle อย่างไรก็ตามฉันไม่สามารถจัดสไตล์ได้ กรุณาช่วย ฉันพบสไตล์ของมันใน v7 styles_base.xml <style name="Base.Widget.AppCompat.DrawerArrowToggle" parent=""> <item name="color">?android:attr/textColorSecondary</item> <item name="thickness">2dp</item> <item name="barSize">18dp</item> <item name="gapBetweenBars">3dp</item> <item name="topBottomBarArrowSize">11.31dp</item> <item name="middleBarArrowSize">16dp</item> <item name="drawableSize">24dp</item> <item name="spinBars">true</item> </style> ฉันเพิ่มสิ่งนี้ลงในสไตล์ของฉันแล้วและไม่ได้ผล เพิ่มไปยัง attr.xml ของฉันด้วย …

3
แถบสถานะโปร่งใสของ Android และแถบการดำเนินการ
ฉันได้ทำวิจัยไม่กี่ในหัวข้อนี้และฉันไม่สามารถหาโซลูชั่นที่สมบูรณ์เพื่อให้ขั้นตอนโดยขั้นตอนและมีการทดลองและข้อผิดพลาดในที่สุดผมก็หาวิธีที่เราสามารถบรรลุผลเหล่านี้: มีความโปร่งใสหรือสีและActionbar Statusbarดูคำตอบของฉันร้อง

8
Android Lollipop มุมมองที่กำหนดเองของ AppCompat ActionBar ไม่ใช้ความกว้างของหน้าจอทั้งหมด
ดังนั้นฉันเพิ่งอัปเดต codebase ของฉันเป็น Lollipop และฉันมีปัญหากับ Action Bar ฉันใช้ AppCompat และ ActionBarActivity และขยายมุมมองที่กำหนดเอง ดูเหมือนว่ามุมมองแบบกำหนดเองจะไม่ใช้ความกว้างทั้งหมดของหน้าจออีกต่อไปโดยปล่อยให้มีแถบบาง ๆ ทางด้านซ้าย แบบที่เคยดู หน้าตาตอนนี้ นี่คือรหัสที่ฉันใช้ตั้งค่าแถบการดำเนินการ ใครมีไอเดียบ้าง final ActionBar actionBar = getSupportActionBar(); if(actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(false); actionBar.setDisplayShowHomeEnabled(false); actionBar.setDisplayShowTitleEnabled(false); actionBar.setDisplayShowCustomEnabled(true); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); actionBar.setCustomView(R.layout.action_bar_content_search_custom_view); actionBar.setBackgroundDrawable(null); // actionBar.setStackedBackgroundDrawable(null); TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title); title.setText(R.string.youtube); ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back); back.setOnClickListener(new OnClickListener() …

5
การตั้งค่าระดับความสูงใน XML บน AppCompat CardView บน Android 5.0
จากสิ่งที่ฉันเข้าใจในช่วงแรกของขั้นตอนการแสดงตัวอย่างดูเหมือนจะไม่มีวิธีตั้งค่าระดับความสูงใน XML เฉพาะบนCardViews โดยไม่ต้องแฮ็กใน Java ตอนนี้มีการเผยแพร่อย่างเป็นทางการแล้วมีวิธีใดบ้างในการทำสิ่งนี้ใน XML โดยไม่ต้องเขียนโค้ด Java เพื่อตั้งค่าความสูง ฉันพยายามแล้วcard_view:cardElevationไม่มีผล ฉันเคยคิดว่าเมื่อฉันใช้อีมูเลเตอร์สำหรับ 5.0 ทุกอย่างเรียบร้อยดี แต่ตอนนี้ฉันใช้เวอร์ชันอย่างเป็นทางการบนอุปกรณ์จริงของฉันทั้งหมดCardViewหายไป พรีอมยิ้มมันใช้งานได้ดี นี่คือ xml แบบเต็มของฉัน <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:orientation="horizontal" android:layout_width="match_parent" android:id="@+id/cv1" card_view:cardElevation="4dp" android:layout_margin="6dp" card_view:cardCornerRadius="3dp" android:layout_height="match_parent">

8
MenuItem tinting บน AppCompat Toolbar
เมื่อฉันใช้ drawables จากAppCompatไลบรารีสำหรับToolbarรายการเมนูของฉันการย้อมสีจะทำงานตามที่คาดไว้ แบบนี้: <item android:id="@+id/action_clear" android:icon="@drawable/abc_ic_clear_mtrl_alpha" <-- from AppCompat android:title="@string/clear" /> แต่ถ้าฉันใช้ drawables ของฉันเองหรือแม้แต่คัดลอก drawables จากAppCompatไลบรารีไปยังโปรเจ็กต์ของฉันเองมันจะไม่ย้อมสี <item android:id="@+id/action_clear" android:icon="@drawable/abc_ic_clear_mtrl_alpha_copy" <-- copy from AppCompat android:title="@string/clear" /> มีเวทมนตร์พิเศษบางอย่างในAppCompat Toolbarสีที่วาดได้จากห้องสมุดนั้นหรือไม่? มีวิธีใดบ้างที่จะทำให้สิ่งนี้ใช้งานได้กับ drawables ของฉันเอง? เรียกใช้สิ่งนี้บนอุปกรณ์ API ระดับ 19 ด้วยcompileSdkVersion = 21และtargetSdkVersion = 21และยังใช้ทุกอย่างจากAppCompat abc_ic_clear_mtrl_alpha_copyเป็นสำเนาที่ถูกต้องของabc_ic_clear_mtrl_alphapng จากAppCompat แก้ไข: การย้อมสีจะขึ้นอยู่กับค่าที่ฉันตั้งไว้android:textColorPrimaryในธีมของฉัน เช่น<item name="android:textColorPrimary">#00FF00</item>จะให้สีโทนเขียวแก่ฉัน ภาพหน้าจอ การย้อมสีทำงานตามที่คาดไว้ด้วย AppCompat การย้อมสีไม่ทำงานกับ …

13
CardView มุมรัศมี
มีวิธีทำให้ CardView มีรัศมีมุมที่ด้านบนหรือไม่? <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" app:cardCornerRadius="10dp" >

11
เปลี่ยนสี Toolbar ใน Appcompat 21
ฉันกำลังทดสอบคุณสมบัติใหม่ของ Appcompat 21 Material Design ดังนั้นฉันจึงสร้าง Toolbar ดังนี้: <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_my_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:theme="@style/ThemeOverlay.AppCompat.ActionBar"/> และรวมไว้ในไฟล์เลย์เอาต์หลักของฉัน จากนั้นฉันตั้งเป็น supportActionBar ดังนี้: Toolbar toolBar = (Toolbar)findViewById(R.id.activity_my_toolbar); setSupportActionBar(toolBar); มันใช้งานได้ แต่อย่างใดฉันไม่สามารถหาวิธีปรับแต่งแถบเครื่องมือได้ มันเป็นสีเทาและข้อความบนนั้นเป็นสีดำ ฉันจะเปลี่ยนพื้นหลังและสีข้อความได้อย่างไร? ฉันได้ทำตามคำแนะนำนี้แล้ว: http://android-developers.blogspot.de/2014/10/appcompat-v21-material-design-for-pre.html ฉันได้ดูแลอะไรในการเปลี่ยนสี? <style name="AppTheme" parent="Theme.AppCompat.Light"> <item name="android:windowActionBar" tools:ignore="NewApi">false</item> <item name="windowActionBar">false</item> </style> แก้ไข : ฉันสามารถเปลี่ยนสีพื้นหลังได้โดยการเพิ่มบรรทัดโค้ดเหล่านี้ในธีม: <item name="colorPrimary">@color/actionbar</item> <item name="colorPrimaryDark">@color/actionbar_dark</item> แต่จะไม่ส่งผลต่อสีข้อความ …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.