是否可以重写随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