使用 Kotlin 更改片段中的按钮背景
Posted
技术标签:
【中文标题】使用 Kotlin 更改片段中的按钮背景【英文标题】:Change Button Background in a Fragment with Kotlin 【发布时间】:2020-03-23 16:22:38 【问题描述】:我是 kotlin 的新手,所以我不知道我做错了多少事情。 我正在尝试从代码中设置片段的按钮背景,但是当我在手机中启动应用程序时,只有背景和一个空按钮
class start : Fragment()
override fun onCreateView(Layoutinflater: LayoutInflater,
container: ViewGroup?, savedInstantState: Bundle?):View?
return Layoutinflater.inflate(R.layout.fragment_start, container, false)
val button_start = view!!.findViewById<Button>(R.id.button_start_1_id)
button_start.setBackgroundResource(R.drawable.button_start1)
和
<ImageButton
android:id="@+id/button_start_1_id"
android:layout_
android:layout_
android:onClick="button_start_pushed">
</ImageButton>
我也是这个论坛的新人,所以如果做错了什么请告诉我
【问题讨论】:
【参考方案1】:欢迎使用 ***。
您的问题的答案很简单。首先,您不需要使用以下代码明确引用您的视图,这是多余的。
val button_start = view!!.findViewById<Button>(R.id.button_start_1_id)
您可以使用视图的 id 轻松获取对视图/图像视图的引用。在您的情况下,您可以在视图类中调用背景属性并使用 resource.getDrawable(R.drawable.button_start1)
设置背景如果您的 API 级别为 16 或以上,您可以使用以下代码。
class ImageFragment : Fragment()
override fun onCreateView(Layoutinflater: LayoutInflater,
container: ViewGroup?, savedInstantState: Bundle?): View?
return Layoutinflater.inflate(R.layout.fragment_start, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?)
super.onViewCreated(view, savedInstanceState)
button_start.background = resources.getDrawable(R.drawable.button_start1)
resources.getDrawable 在 Kotlin 中给出弃用警告,因为它需要 Resource.Theme 作为第二个参数。如果您有 Resource.Theme,请将其作为第二个参数。 您的布局如下:
<ImageButton
android:id="@+id/button_start"
android:layout_
android:layout_
android:onClick="button_start_pushed">
</ImageButton>
如果您使用低于 16 的 API 级别,则可以使用以下代码:
class ImageFragment : Fragment()
override fun onCreateView(Layoutinflater: LayoutInflater,
container: ViewGroup?, savedInstantState: Bundle?): View?
return Layoutinflater.inflate(R.layout.fragment_start, container, false)
override fun onViewCreated(view: View, savedInstanceState: Bundle?)
super.onViewCreated(view, savedInstanceState)
button_start.setImageResource(R.drawable.button_start1)
只要确保你的drawable中有button_start1图标或img,并且你的布局名称是正确的。
还有一点需要注意:拥有自己一致的命名约定会容易得多,或者至少遵循 Kotlin 或 Java 推荐的命名约定。
希望对你有帮助!
【讨论】:
第二段代码完美解决了我的问题,非常感谢,很有用。以上是关于使用 Kotlin 更改片段中的按钮背景的主要内容,如果未能解决你的问题,请参考以下文章