2017-04-13 37 views
0

我試圖將按鈕添加到項目的ListView,以便用戶可以通過單擊按鈕/複選框將特殊項添加到其「收藏夾」。在添加此功能之前,列表的佈局看起來很好。Android「ListView」項目文本重疊和切斷

這裏是 「之前」 的形象:Good Layout

這裏是 「之前」 java代碼:現在

ArrayList<Special> specials = specialda.getAllSpecialsByDay(selectedDay); 
ListView listView = (ListView) findViewById(R.id.listView); 
ArrayAdapter<Special> adapter = new ArrayAdapter<Special>(this, android.R.layout.simple_list_item_1, specials); 
listView.setAdapter(adapter); 

,改變了Java代碼之後:

ArrayList<Special> specials = specialda.getAllSpecialsByDay(selectedDay); 
ListView listView = (ListView) findViewById(R.id.listView); 
     ArrayAdapter<Special> adapter = new ArrayAdapter<Special>(this, android.R.layout.simple_list_item_multiple_choice, specials); 
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
listView.setAdapter(adapter); 

我結束了這種扭曲的看法:

After image

下面是XML佈局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.yourfullname.flashcards.laxspecials.DisplaySpecials" 
    tools:showIn="@layout/activity_display_specials"> 

    <ListView 
     android:id="@+id/listView" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 
</LinearLayout> 

什麼我做錯了或需要改變任何提示嗎?

感謝

編輯:這裏是高達display_specials_button.xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeightSmall" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:gravity="center_vertical" 
    android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" 
    android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" 
    android:paddingRight="?android:attr/listPreferredItemPaddingRight"/> 

</LinearLayout> 

回答

1

可以dublicate的android.R.layout.simple_list_item_multiple_choice進行必要的修改來源:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeightSmall" 
    android:textAppearance="?android:attr/textAppearanceListItemSmall" 
    android:gravity="center_vertical" 
    android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
    android:paddingStart="?android:attr/listPreferredItemPaddingStart" 
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" /> 

不同的是,現在你以不同的方式提供android:minHeightandroid:layout_height

+0

我在哪裏放置這個XML? –

+0

創建一個佈局並傳遞給你的適配器:'new ArrayAdapter (this,R.layout.your_new_layout,specials);' – azizbekian

+0

確定我收到一個「會話」應用程序:錯誤安裝APK「運行時出錯 –