是否可以重寫隨Android提供的標準佈局?例如,是否有可能使文字變小android.R.layout.simple_list_item_checked?或者我只需要自己做一下佈局就可以做到這一點?謝謝。更改標準android.R.layout選項的樣式?
回答
你必須做出自己的佈局。爲了製作自定義佈局並使用標準適配器(如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佈局並改變你想要改變的東西
是的。這裏有一個類似的事情正在完成(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元素。
這是否做你所需要的?
謝謝,但我希望不必製作自己的佈局文件,但以某種方式繼承android.R.layout.simple_list_item_checked,然後覆蓋我想更改的特定值(在本例中爲文本大小),但在此示例中你從頭開始創建你自己的樣式。到目前爲止,它看起來像你不能直接改變android.R.layout中的標準佈局,你需要將它的版本寫成207。 – mattboy 2012-03-24 12:07:18
- 1. 如何更改選項菜單樣式
- 2. 更改選項標籤內部Title屬性的樣式
- 3. WPF TabItem樣式 - 更改標題文本後重畫選項卡
- 4. 選擇項目更改時更改tabitem樣式
- 5. 更改rich:simpleTogglePanel標題樣式
- 6. 更改ActionBar標題樣式
- 7. html選擇標記如果選項更改添加樣式在選擇
- 8. 如何使用選擇選項更改div的樣式
- 9. 更改複選框列表中所選項目的樣式
- 10. JavaFX CSS樣式:更改選定選項卡的高亮顏色
- 11. 更改選項菜單項中已選中複選框的樣式
- 12. 使用Angular JS使用「required」時選擇選項樣式更改
- 13. JTabbedPane:更改選項卡標題時更改選項卡大小
- 14. 雙擊更改項目樣式的JList
- 15. 如何更改在UWP中選定的ListView項目的樣式
- 16. 用jquery更改複選框的樣式
- 17. 更改日期選擇器的樣式
- 18. GridView選擇按鈕的更改樣式
- 19. 更改amCharts的標籤樣式
- 20. 更改標籤Docorator的字體樣式
- 21. 更改面板的標題樣式
- 22. Android MapBox更改MyLocation標記的樣式
- 23. 根據標誌更改QTableWidgetItem的樣式
- 24. IE9標準列表模式更改
- 25. 如何更改使用樣式所選項目的顏色?
- 26. 使用樣式表更改索引QTabBar選項卡的背景
- 27. 在MSIE下將select的選項顯示樣式更改爲none
- 28. 如何更改React-native中的樣式可滾動選項卡
- 29. 如何使用Flex更改TileList所選項目中的樣式?
- 30. 無法更改列表框中所選項目的樣式
謝謝。當你給一個不同的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
是的你是對的,因爲「佈局」==一個TextView。但對於其他標準佈局,這應該不起作用。我的意思是佈局管理器中包含多個視圖的佈局,例如LinearLayout可能 – 207 2012-03-24 00:23:24
+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