1

Androidアプリケーションのモジュールを有効/無効にできる画面があります。

このために、CheckboxPreference画面を使用します。これはすべて問題ありませんが、2行より長い説明が追加されると、要約フィールドが切り捨てられます。

モジュールごとに4〜5行の説明があるとすると、これをヘルパーウィンドウに表示したいと思います。

クリックイベントをCheckboxPreferenceにバインドしようとしましたが、行全体で発生するため、チェックボックスがクリックされたときだけでなく、行をクリックするとチェックボックスが切り替わります。

だから今、これを修正できるかどうか疑問に思っています。したがって、ユーザーがより多くの情報を必要とする場合は、テキストをタップするだけでヘルパーが開き、設定を切り替えたい場合は、チェックボックスをタップします。

どうしますか?他のアイデアがうまくいけば、私もオープンです。

4

3 に答える 3

13

Hmnは今日も同じ問題を抱えていました。私の代替ソリューションは、要約内により多くのテキストを表示できるようにすることです。

次のようなCheckBoxPreferenceの独自のサブクラスを作成するだけです。

public class CheckBoxPreferenceWithLongSummary extends CheckBoxPreference{

    public CheckBoxPreferenceWithLongSummary(Context context) {
        super(context);
    }

    public CheckBoxPreferenceWithLongSummary(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public CheckBoxPreferenceWithLongSummary(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
        summaryView.setMaxLines(10);
    }
}

次に、PreferenceScreen内で(xmlを使用してPreferenceレイアウトを設定すると仮定します-完全にプログラムで可能かどうかはわかりません)、古い<CheckBoxPreference.../>ものを次のような新しい実装に置き換えます。<com.example.whatever.CheckBoxPreferenceWithLongSummary ... />

parentClassではcom.android.internal.R.id.summaryが使用されているため、findViewById(android.R.id.summary)についてはよくわかりませんが、直接アクセスできないようです。 Java内から?それが単なる偶然ではないことを願っています:)

于 2010-04-11T01:01:37.110 に答える
0

CheckboxPreferencesだけでなく、さまざまなタイプの設定に対してより長い要約が必要だったため、私の場合により適した代替ソリューションを見つけました。

  • data/res/layout/preference.xmlSDKからres/layout/preference_long_summary.xmlアプリにファイルをコピーしました。(APIレベル7のものを使用しました。これは、より高いレベルでも機能するようです)
  • TextViewandroid:maxLinesから属性を削除しました@+android:id/summary
  • より長い要約が必要な設定の設定からこのレイアウトを参照しましたandroid:layout="@layout/preference_long_summary"
于 2012-04-13T08:09:05.073 に答える
0

独自のサブクラスを作成して、CheckboxPreferenceより多くのスペースを確保できる場合があります。

于 2010-03-09T12:55:41.373 に答える