2010-03-09 30 views
1

我有一個屏幕,您可以啓用/禁用我的Android應用程序模塊。當CheckboxPreference摘要字段不夠長時,顯示首選屏幕的額外信息?

爲此,我使用CheckboxPreference屏幕。這一切都很好,但如果更長的描述被添加到2行以上,摘要字段會被截斷。

假設我有4-5行的描述可用於每個模塊,我想在輔助窗口中顯示這個。

我試圖將點擊事件綁定到CheckboxPreference,但是會觸發整條線,所以不僅在單擊複選框時,以及更多,無論您單擊該行復選框被切換的位置。

所以現在我想知道這是否可以修復。因此,如果用戶需要更多信息,只需點擊文本並打開幫助程序,如果想切換設置,則點擊複選框。

你會怎麼做?如果他們能夠工作,我也願意接受其他想法。

回答

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來設置優先佈局 - 不知道,如果它甚至有可能完全編程)只是你的新的實現替換舊<CheckBoxPreference.../><com.example.whatever.CheckBoxPreferenceWithLongSummary ... />

似乎只是正常工作對我來說,altough我不知道有關findViewById(android.R.id.summary),因爲在父類com.android.internal .R.id.summary被使用,似乎是否定的t直接從Java內部訪問?希望它不只是一個巧合:)

+0

工作完美!你爲我節省了幾個小時,男人。謝謝 – 2016-06-30 15:00:03

0

您可能可以創建自己的子類CheckboxPreference,爲您提供更多空間。

+0

我不認爲我能夠做到這一點只是我自己,沒有一個很好的教程。既然你知道更多的資源,你知道一個教程來幫助我嗎? – Pentium10 2010-03-09 16:14:48

+0

不,從班上看,我不太清楚如何自己做。在未來的書籍版本中,還有另外一個關於這些東西的話題:-) – CommonsWare 2010-03-09 17:25:16

0

我發現了一個更適合我的情況的替代解決方案,因爲我需要不同類型的偏好的更長的摘要,而不僅僅是CheckboxPreferences。

  • 我在我的應用程序中將SDK123的文件data/res/layout/preference.xml複製到res/layout/preference_long_summary.xml。 (我從API 7級的一個,因爲它似乎也工作於更高級別)
  • 移除了@+android:id/summary的TextView
  • 從我的喜好引用此佈局的地方,我需要更長的總結與android:layout="@layout/preference_long_summary"的喜好android:maxLines屬性