gpt4 book ai didi

android - 如何重用布局/布局属性并在之后更改单个属性

转载 作者:行者123 更新时间:2023-11-29 17:33:06 27 4
gpt4 key购买 nike

我有这个简单的按钮 XML:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/some_color" />
</shape>
</item>

我是这样使用它的:

<Button
android:textColor="#ffffff"
android:background="@drawable/buttonxml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="String"
android:id="@+id/button"/>

问题是,通过这样做,我可以使用此按钮 XML 的唯一颜色是 some_color。如果我想重复使用相同的布局,我将需要创建另一个 XML 来更改颜色。有什么办法可以重用按钮 XML,仅更改某些值吗?我在想:

<Button
android:textColor="#ffffff"
android:background="@drawable/buttonxml"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="String"
android:id="@+id/button"
parent:color="@color/anotherColor"/>

最佳答案

您可以在 styles.xml 中创建自定义按钮样式以重用特定样式:

<style name="CustomButtonStyle" parent="@android:style/Widget.Button">
<item name="android:background">@drawable/buttonxml</item>
<item name="android:textColor">#ffffff</item>
</style>

您可以在布局中使用此样式:

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="String"
android:id="@+id/button"
style="@style/CustomButtonStyle"
/>

textColor 将为白色,background 将为 buttonxml


如果您想覆盖单个属性,只需将其添加到您的布局中即可。它们会覆盖样式(Theme样式和布局中的样式)

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="String"
style="@style/CustomButtonStyle"
android:textColor="@color/anotherColor"


/>

此处 textcolor 将是 anotherColorbackground 仍将是 buttonxml

备选方案

使用include重用整个布局。如果在包含中添加属性,您也可以覆盖它们。

<include android:id=”@+id/news_title”
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/anotherColor"
layout=”@layout/yourbuttonlayout”/>

关于android - 如何重用布局/布局属性并在之后更改单个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31848884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com