рд╕рднреА рдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджреЗрдЦреАрдВ - рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдПрдХ рдореЗрдиреВред рдпрд╣ рдорд╛рдирдХ рд╡рд░реАрдпрддрд╛рдПрдБ рд╣реИ, рдХреЗрд╡рд▓ рдорд╛рдирдХ Android рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Settings.apk рд╕рд┐рд╕реНрдЯрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
1. рдХрдХреНрд╖рд╛ IconPreferenceScreen.java;
2. рдореВрд▓реНрдпреЛрдВ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ attrs.xml рдлрд╝рд╛рдЗрд▓;
3. рд▓реЗрдЖрдЙрдЯ рдкрд╕рдиреНрдж_рдЗрдВрдЪрд╛_рдПрдХреНрд╕рдПрдордПрд▓;
4. рдЦреБрдж рдХреА рдХрдХреНрд╖рд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВред рд╕рдХреНрд░рд┐рдпрддрд╛ред рдЬрд╛рд╡рд╛;
5. рдЖрд╡реЗрджрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓ рд╡рд░реАрдпрддрд╛рдУрдВред xml
рдкрд╣рд▓реЗ 3 рдлрд╛рдЗрд▓реЗрдВ рд╕реНрд░реЛрдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рд╖рдп рдореЗрдВ рдЙрдирдХреЗ рдкрд╛рда рджреЗ рджреВрдВрдЧрд╛ред
IconPreferenceScreen.java рд╡рд░реНрдЧ:
public class IconPreferenceScreen extends Preference { private Drawable mIcon; public IconPreferenceScreen(Context context, AttributeSet attrs) { this(context, attrs, 0); } public IconPreferenceScreen(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setLayoutResource(R.layout.preference_icon); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.IconPreferenceScreen, defStyle, 0); mIcon = a.getDrawable(R.styleable.IconPreferenceScreen_icon); } @Override public void onBindView(View view) { super.onBindView(view); ImageView imageView = (ImageView) view.findViewById(R.id.icon); if (imageView != null && mIcon != null) { imageView.setImageDrawable(mIcon); } } public void setIcon(Drawable icon) { if ((icon == null && mIcon != null) || (icon != null && !icon.equals(mIcon))) { mIcon = icon; notifyChanged(); } } public Drawable getIcon() { return mIcon; } }
Attrs.xml рдлрд╝рд╛рдЗрд▓:
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="IconPreferenceScreen"> <attr name="icon" format="reference" /> </declare-styleable> </resources>
рд▓реЗрдЖрдЙрдЯ рдкрд╕рдиреНрдж_рдЗрдВрдЪрд╛_рдПрдХреНрд╕рдПрдордПрд▓
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+android:id/iconpref" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:gravity="center_vertical" android:paddingRight="?android:attr/scrollbarSize"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6dip" android:layout_marginRight="6dip" android:layout_gravity="center" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="2dip" android:layout_marginRight="6dip" android:layout_marginTop="6dip" android:layout_marginBottom="6dip" android:layout_weight="1"> <TextView android:id="@+android:id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:textAppearance="?android:attr/textAppearanceLarge" android:ellipsize="marquee" android:fadingEdge="horizontal" /> <TextView android:id="@+android:id/summary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@android:id/title" android:layout_alignLeft="@android:id/title" android:textAppearance="?android:attr/textAppearanceSmall" android:maxLines="2" /> </RelativeLayout> </LinearLayout>
рдЕрдЧрд▓рд╛, PreferencesActivity.java рд╡рд░реНрдЧ рдореЗрдВ, рдЖрдкрдХреЛ рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
addPreferencesFromResource(R.xml.preferences); IconPreferenceScreen test = (IconPreferenceScreen) findPreference("key"); Resources res = getResources(); Drawable icon = res.getDrawable(R.drawable.icon1); test.setIcon(icono1);
рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдореЗрдВред Xml рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЕрдкрдиреЗ рдЖрдк рдХреЛ IconPreferenceScreen рджрд░реНрдЬ рдХрд░рддреА рд╣реИрдВ
<com.example.app.IconPreferenceScreen android:title="IconPreferenceScreen" android:key="key" />

рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ IconPreferenceScreen рдПрдХ рдорд╛рдирдХ рд╡рд░реАрдпрддрд╛рд╕реНрдХреНрд░реАрди рдирд╣реАрдВ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рддрддреНрд╡ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдЗрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред
test.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { startActivity(new Intent(PreferencesActivity.this, PreferencesActivity2.class)); return true; } });
рдмрд╕ рдЗрддрдирд╛ рд╣реАред
рдПрдХ рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдХреЛ рдореЗрдирд┐рдлреЗрд╕реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рд╕рдХреНрд░рд┐рдпрдг рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХ рд╕рдВрд╡рд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
android:theme="@android:style/Theme.Dialog"
рдФрд░ рдЖрдк рдПрдХ рд╢реАрд░реНрд╖рдХ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕рдВрд╡рд╛рдж рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ style.xml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="NoTitleDialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> </style> </resources>
рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдореИрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛
android:theme="@style/NoTitleDialog"

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд╛рдн:
рд╕реБрдВрджрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЖрдЗрдЯрдо рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рд╕рд╛рде рд╣реА рдПрдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд░рдЦреЗ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд╕рдорд╛рди рдорд╛рдирдХ рд╡рд┐рдЬреЗрдЯ;
-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реМрдВрджрд░реНрдпрд╢рд╛рд╕реНрддреНрд░ред
рд╡рд┐рдкрдХреНрд╖:
рдорд╛рдирдХ рд╕реНрдкреИрдирд╕реНрдХреНрд░реАрди рдХреЗ рд╡рд┐рдкрд░реАрдд, IconPreferenceScreen рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
рдбрд╛рдЙрдирд▓реЛрдб рд▓рд┐рдВрдХ:
1.
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб ;
2.
рдирдореВрдирд╛ рдЖрд╡реЗрджрди (рдПрдкреАрдХреЗ) ред
рдЙрджрд╛рд╣рд░рдг 3 рдореЗрдВ, рд╕рдХреНрд░рд┐рдпрдг, рдкрд╣рд▓рд╛ рдкреНрд░рдпреЛрдЧ IconPreferenceScreen рдФрд░ Theme.Dialog рд╢реИрд▓реА рдХрд╛, рджреВрд╕рд░рд╛ (рджреЛрдиреЛрдВ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ) рдорд╛рдирдХ рд╡рд░реАрдпрддрд╛рдПрдБ рдФрд░ NoTitleDialog рд╢реИрд▓реА рдХреЗ рд╕рд╛рде Pre PreActivity, рддреАрд╕рд░рд╛, IconPreferenceScreen рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рддреАрд╕рд░рд╛, рдЬреЛ рдХрд┐рд╕реА рд╢реИрд▓реА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛, рдпрд╣ рдареАрдХ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рд╣реИред рдФрд░ Android рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рдВ, рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реБрдВрджрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдВрдЧреЗ, рд╣рдо рджреБрдирд┐рдпрд╛ рдХреЛ рд╕рдЬрд╛рдПрдВрдЧреЗ!