Câu hỏi này đã được hỏi rất nhiều về SO và tôi đã tham chiếu tất cả các câu trả lời. Tôi vẫn còn lại với nền màu xanh Holo mặc định cho các mục đã chọn trên ngăn điều hướng của tôi. Tôi mới sử dụng Java và tôi bối rối về phần "ngữ cảnh" của .setAdapter()
.
Dự án của tôi là một Hoạt động có nhiều phần được hoán đổi bằng ngăn kéo điều hướng.Màu nền tùy chỉnh cho mục đã chọn với "activatedBackgroundIndicator" Ngăn điều hướng
Đây là bộ chuyển đổi của tôi:
mDrawerListView.setAdapter(new ArrayAdapter<String>(
// First parameter - Context
getActionBar().getThemedContext(),
// Second parameter - Layout for the row
R.layout.fragment_navigation_drawer_list_item,
// Third parameter - ID of the TextView to which the data is written
android.R.id.text1,
// Forth - the Array of data
new String[]{
getString(R.string.title_section1),
getString(R.string.title_section2),
getString(R.string.title_section3),
getString(R.string.title_section4),
}));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
Bối cảnh ở đây xuất phát từ "đã làm chín sơ" ngăn điều hướng ở Android Studio. Tôi nghĩ đây sẽ là câu trả lời Navigation Drawer item background colour for selected item. Vì vậy, tôi đã thay đổi ngữ cảnh của mình thành getActivity().getBaseContext(),
, nhưng điều đó không thay đổi bất cứ điều gì.
chủ đề của tôi (styles.xml
):
<resources>
<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
<item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<!-- Navigation Drawer styling -->
<style name="NavDrawerItemSelected" parent="AppBaseTheme">
<item name="android:activatedBackgroundIndicator">@drawable/activated_background</item>
</style>
</resources>
activated_background
trong dir 'drawables':
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true" android:drawable="@color/green" />
<item android:state_selected="true" android:drawable="@color/green" />
<item android:state_pressed="true" android:drawable="@color/green" />
<item android:state_checked="true" android:drawable="@color/green" />
<item android:drawable="@android:color/transparent" />
</selector>
Tôi không biết mà những quốc gia trên là nghĩa vụ phải được sử dụng, vì vậy tôi đã thêm tất cả chúng tôi có thể tìm thấy.
Cuối cùng, khi một mục được chọn mDrawerListView.setItemChecked(position, true);
được gọi.
Mọi thứ đều hoạt động, ngoại trừ kiểu chủ đề tùy chỉnh. (min API = 11, thử nghiệm trên API 17 AVD)
Cảm ơn! Tôi không thể tin rằng tôi đã không đi qua đó trong câu trả lời khác. Trước đây tôi đã có 'android: background =? Android: activatedBackgroundIndicator'. – Flash
CUỐI CÙNG! cảm ơn .. –
đây là câu trả lời đơn giản và rõ ràng nhất cho câu hỏi này về SO. – u2tall