2016年2月6日土曜日

PreferenceFragmentの評価


PreferenceFragmentの評価
Preference情報を基調としているPreferenceFragmentの評価はどうなのだろうか。
CheckBoxPreference等ごく限られた道具しかない。データの出し入れに特化したものだ。画面表示関係には弱い。
例えば、PreferenceScreenにButtonを配置したい場合、どうするのか。

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        Preference preferenceButton = findPreference("PreferenceScreen_btnClose");
        preferenceButton.setLayoutResource(R.layout.preference_button);
        preferenceButton.setOnPreferenceClickListener(this);
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public boolean onPreferenceClick(Preference preference){
        if(preference==findPreference("PreferenceScreen_btnClose")){
            //ここでButton押し下げ関係処理をする
            return true;
        }
        return false;
    }

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <Preference
        android:key="PreferenceScreen_btnClose"
        >
    </Preference>
</PreferenceScreen>

R.layout.preference_button
<?xml version="1.0" encoding="utf-8"?>
<Button
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:text="@string/aaaa"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="false"(必要)
    android:focusable="false"(必要)
    android:drawableStart="@android:drawable/ic_menu_close_clear_cancel"
    >
</Button>

単純にクリックするだけであれば悩まない。
複雑なViewGroupを表示・操作したい場合どうするのか。
Preferenceを拡張して行うということである。職人技ですね。普通のプログラマーが自力だけでこのコードを書けるとは思えない。
「複雑な形状のViewの表示は別途画面を設けてください」というのが、本システム設計者の考え方かもしれない。



0 件のコメント:

コメントを投稿