如何将照片添加到 android 上的 ReferrenceScreen?

How to add the photos to ReferrenceScreen on android?

现在创建一个 Fragment 子类,它将显示您的 ImageView 并提供一个容器来保存您的首选项:

public class More : Android.Support.V4.App.Fragment
    {
        private MainActivity mainActivity;
        public override void OnCreate (Bundle savedInstanceState)
        {
            base.OnCreate (savedInstanceState);

            // Create your fragment here
        }

        public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Use this to return your custom view for this Fragment
            // return inflater.Inflate(Resource.Layout.YourFragment, container, false);

            //return base.OnCreateView (inflater, container, savedInstanceState);
            return inflater.Inflate(Resource.Layout.MoreLayout,container,false);

        }

        [Obsolete("deprecated")]
        public override void OnAttach (Android.App.Activity activity)
        {
            mainActivity = (MainActivity)activity;
            base.OnAttach (activity);
        }

        public override void OnActivityCreated (Bundle savedInstanceState)
        {
            base.OnActivityCreated (savedInstanceState);
            mainActivity.FragmentManager.BeginTransaction().Add(Resource.Id.PreferencesContainer, new ReferenceFragment()).Commit();


        }


    }

我想在 PreferenceScreen 中设置图片如下图 Settings

创建一个仅显示您的首选项的 PreferenceFragment 子类,我 copy/pasted 将您的首选项放入文件 Resources/layout/MyPrefs.xml 中,然后将它们加载到 Fragment 的 OnCreate 中:

 public class ReferenceFragment : PreferenceFragment
        {
            public override void OnCreate (Bundle savedInstanceState)
            {
                base.OnCreate (savedInstanceState);
                AddPreferencesFromResource (Resource.Xml.preferecesSettings);
                // Create your fragment here
            }

            public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
            {
                // Use this to return your custom view for this Fragment
                // return inflater.Inflate(Resource.Layout.YourFragment, container, false);

                return base.OnCreateView (inflater, container, savedInstanceState);
            }
        }

您可以通过 PreferenceFragment.

执行此操作

创建一个 PreferenceFragment 子类 来显示你的偏好,我 copy/pasted 你的到一个文件 Resources/layout/MyPrefs.xml 然后加载那些FragmentOnCreate:

public class SettingsFragment : PreferenceFragment
{
    public override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        AddPreferencesFromResource(Resource.Layout.MyPrefs);
    }

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        return base.OnCreateView(inflater, container, savedInstanceState);
    }
}

现在创建一个 Activity 子类 来显示您的 ImageView 并提供一个容器来保存您的偏好:

[Activity(Label = "SettingsActivity")]
public class SettingsActivity : Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.PreferencesLayout);
        FragmentManager.BeginTransaction().Add(Resource.Id.PreferencesContainer, new SettingsFragment()).Commit();
    }
}

正在 Activity 中加载的布局将显示图像和您的偏好:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView
        android:id="@+id/PreferencesImage"
        android:layout_width="match_parent"
        android:layout_height="150dp"
        android:src="@drawable/PreferenceImage" />
    <FrameLayout
        android:id="@+id/PreferencesContainer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/PreferencesImage"/>
</RelativeLayout>    

现在只需创建一个 Intent 并启动 activity 以显示您的自定义首选项:

Intent intent = new Intent(this, typeof(SettingsActivity));
StartActivity(intent);