2012-03-23 81 views

回答

1

你必須做出自己的佈局。爲了製作自定義佈局並使用標準適配器(如ArrayAdapter),您必須在標準佈局中指定自定義佈局中的相同ID。例如,simple_list_item_checked中的TextView具有ID「@android:id/text1」(http://www.devdaily.com/java/jwarehouse/android-examples/platforms/android-2/data/res/layout/simple_list_item_checked。 xml.shtml)。在您的自定義佈局中,您可以指定該ID。因此,您不必編寫自定義適配器。所以最好的方法就是複製標準的xml佈局並改變你想要改變的東西

+1

謝謝。當你給一個不同的id(或沒有id)比標準佈局中有什麼可能會出錯?我複製了simple_list_item_checked佈局並完全刪除了id,並且它在我像這樣加載時似乎仍然正常工作:'ArrayAdapter adapter = new ArrayAdapter (context,R.layout.custom_checked_list,arraylist); setListAdapter(adapter);' – mattboy 2012-03-24 00:04:59

+0

是的你是對的,因爲「佈局」==一個TextView。但對於其他標準佈局,這應該不起作用。我的意思是佈局管理器中包含多個視圖的佈局,例如LinearLayout可能 – 207 2012-03-24 00:23:24

+1

+1您的優點。看看適配器的實現。如果適配器未使用textViewResourceId啓動,則ArrayAdapter不關心id。當沒有提供資源ID時,適配器假定_whole_ ressource是一個TextView。否則,適配器將搜索給定的資源ID(finViewById)(請參閱ArrayAdapter impl https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.java) – 207 2012-03-24 11:34:39

0

是的。這裏有一個類似的事情正在完成(RES /價值/ styles.xml):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="ContactLabelTextView"> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:gravity">right</item> 
    <item name="android:textSize">14sp</item> 
    <item name="android:textColor">@android:color/white</item> 
    <item name="android:layout_marginLeft">5dp</item> 
    <item name="android:layout_marginRight">5dp</item> 
    <item name="android:layout_marginTop">5dp</item> 
    </style> 
    <style name="questionTableRow"> 
     <item name="android:layout_width">wrap_content</item> 
     <item name="android:layout_height">wrap_content</item> 
     <item name="android:layout_margin">5dp</item> 
     <item name="android:layout_marginLeft">5dp</item> 
     <item name="android:background">@drawable/textview_border</item> 
    </style> 
</resources> 

然後,當你想要的樣式應用到在佈局文件,您已經創建(main.xml中的元素,RES /layout/your_custom_layout.xml):

<?xml version="1.0" encoding="utf-8"?> 
    <TableRow 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/questionTableRow" 
     style="@style/questionTableRow" 

很明顯,您正在使用textView來完成此操作。我提供了一個我自己的代碼,其中textView獲取特定樣式的示例。實際上,我甚至沒有應用textView樣式,但是我粘貼了將樣式應用於tableRow的位置,只是讓您瞭解如何將其應用於xml元素。

這是否做你所需要的?

+0

謝謝,但我希望不必製作自己的佈局文件,但以某種方式繼承android.R.layout.simple_list_item_checked,然後覆蓋我想更改的特定值(在本例中爲文本大小),但在此示例中你從頭開始創建你自己的樣式。到目前爲止,它看起來像你不能直接改變android.R.layout中的標準佈局,你需要將它的版本寫成207。 – mattboy 2012-03-24 12:07:18

相關問題