2011-05-03 84 views
3

編輯:經驗教訓:設置方向或可能不顯示的東西。多個視圖不會顯示在自定義警報對話框中

按照http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog我試圖創建一個自定義提醒對話框。具體來說,我創建了一個包含多個視圖(稱爲HelpItemView)的對話框,每個視圖都包含兩個文本視圖。我正在使用它創建一個警報對話框,其中包含標題內容對形式的幫助信息。

我的問題是隻有第一個HelpItemView出現,儘管我正在創建一堆。警報對話框中是否有限制此操作的內容?我搞砸了我的代碼,並沒有任何問題,當他們連接到我的活動的主要線性佈局時顯示所有的HelpItemViews,似乎這個問題只出現在警報對話框。我的活動範圍內

代碼:

private void createHelp() { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    Resources res = getResources(); 
    LinearLayout help_root = (LinearLayout)getLayoutInflater().inflate(R.layout.help_frame, null); 
    LinearLayout help = (LinearLayout) help_root.findViewById(R.id.helpGroup); 
    help.addView(new HelpItemView(this, res.getString(R.string.help_main_welcome), 
      res.getString(R.string.help_main_welcome_content))); 
    help.addView(new HelpItemView(this, res.getString(R.string.add_id), 
      res.getString(R.string.help_add_id_content))); 
    help.addView(new HelpItemView(this, res.getString(R.string.view_ids), 
      res.getString(R.string.help_view_ids_content))); 
    help.addView(new HelpItemView(this, res.getString(R.string.view_map), 
      res.getString(R.string.help_view_map_content))); 
    help.addView(new HelpItemView(this, res.getString(R.string.browse_plants), 
      res.getString(R.string.help_browse_plants_content))); 
    help.addView(new HelpItemView(this, res.getString(R.string.btnQuickIdentification), 
      res.getString(R.string.help_btnQuickIdentification_content))); 
    help.addView(new HelpItemView(this, res.getString(R.string.btnOptions), 
      res.getString(R.string.help_options_content))); 
    builder.setView(help_root); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
} 

helpframe.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
<ScrollView android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 
<LinearLayout android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/helpGroup"></LinearLayout> 
</ScrollView> 
</LinearLayout> 

HelpItemView.java

public class HelpItemView extends RelativeLayout { 
private TextView m_vwItemTitle; 
private TextView m_vwItemText; 

public HelpItemView (Context context, String header, String content) { 
    super(context); 
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    inflater.inflate(R.layout.help_item, this, true); 
    m_vwItemTitle = (TextView) this.findViewById(R.id.helpItemHeader); 
    m_vwItemText = (TextView) this.findViewById(R.id.helpItemText); 
    setContent(header, content); 
} 

private void setContent(String header, String content) { 
    m_vwItemTitle.setText(header); 
    m_vwItemText.setText(content); 
} 

}

help_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
android:padding="10dip"> 
<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/helpItemHeader" 
android:textSize="20sp" 
android:textStyle="bold" 
android:layout_gravity="center" 
></TextView> 
<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/helpItemText" 
/> 
</LinearLayout> 

也許它的一些愚蠢的,我只是想念它,我不知道。任何想法/幫助將不勝感激。哦,我正在開發Android 1.6,如果這有什麼區別。我願意轉換爲一個listview,如果這可以更好地工作(或根本),但我仍然想知道當前代碼有什麼問題,如果任何人都可以弄明白的話。

回答

3

我認爲你應該改變helpGroup的方向爲橫向。

+0

真的嗎?哦,我不能相信它,完全有效......多麼痛苦。我不知道沒有設定方向可能會產生如此嚴重的後果。永遠的謝意。 – Emily 2011-05-03 05:58:22

+0

默認情況下,LinearLayout的方向是水平的。在Android中使用錯誤的方向是非常常見的問題。不客氣! – Michael 2011-05-03 06:21:26