'How to mark an Icon on the right of a Preference Item in the PreferenceActivity?
Please click to see the image http://i1094.photobucket.com/albums/i455/tdounnyy/device.png
At the bottom of this PreferenceActivity, the "Select ringtone" has an icon/button on the right side.
And "Vibrate" does not.
This Vibrate Preference is one custome Preference extends Preference.
I want to put the same Icon in the Vibrate row. One way is to extends ListPreference or RingtonePreference to cheat OS.
I don't like this, wondering if there is a better solution.
preferences.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2006 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Layout used by PreferenceScreen. This is inflated inside
android.R.layout.preference. -->
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="4dip"
android:layout_gravity="center_vertical"
android:background="@drawable/btn_circle"
android:src="@drawable/ic_btn_round_more" />
I added prefix "android" as:
android:background="@android:drawable/btn_circle"
android:src="@android:drawable/ic_btn_round_more"
Now, Eclipse says: Error: Resource is not public. I googled but no luck. Any thought how to break through?
Solution 1:[1]
inside your preference.xml
android:widgetLayout="@layout/layout_contain_imageview"
or in .java
setWidgetLayoutResource(R.layout.layout_contain_imageview);
example for layout_contain_imageview.xml
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/ivIcon"
android:layout_width="32dp"
android:layout_height="32dp"
android:src="@drawable/round_app_settings_alt_white_36"
app:tint="@color/icon_tint"/>
when you want to change icon at runtime
@Override
public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
ImageView ivIcon = (ImageView) holder.findViewById(R.id.ivIcon);
ivIcon.setImageResource(R.drawable.round_get_app_white_36);
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
