使用 Kotlin 更改片段中的按钮背景
Change Button Background in a Fragment with Kotlin
我是 kotlin 的新手,所以我不知道自己做错了多少事情。
我正在尝试通过代码设置片段的按钮背景,但是当我在 phone 中启动应用程序时,只有背景和一个空按钮
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_width="124dp"
android:layout_height="69dp"
android:onClick="button_start_pushed">
</ImageButton>
我也是这个论坛的新人所以如果做错了什么请告诉我
欢迎使用 Whosebug。
你的问题的答案很简单。首先,您不需要使用以下代码明确引用您的视图,这是多余的。
val button_start = view!!.findViewById<Button>(R.id.button_start_1_id)
您可以使用视图的 ID 轻松获取对您的视图/图像视图的引用。在您的情况下,您可以在视图 class 中调用背景 属性 并使用 resource.getDrawable(R.drawable.button_start1)[=14= 设置背景]
如果你的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_width="124dp"
android:layout_height="69dp"
android:onClick="button_start_pushed">
</ImageButton>
如果您使用的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.setImageResource(R.drawable.button_start1)
}
}
只需确保您的可绘制对象中有 button_start1 图标或 img,并且布局名称正确。
还有一点要注意:如果你有自己一致的命名约定,或者至少遵循 Kotlin 或 Java.
推荐的命名约定,会容易得多
希望对您有所帮助!
我是 kotlin 的新手,所以我不知道自己做错了多少事情。 我正在尝试通过代码设置片段的按钮背景,但是当我在 phone 中启动应用程序时,只有背景和一个空按钮
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_width="124dp"
android:layout_height="69dp"
android:onClick="button_start_pushed">
</ImageButton>
我也是这个论坛的新人所以如果做错了什么请告诉我
欢迎使用 Whosebug。
你的问题的答案很简单。首先,您不需要使用以下代码明确引用您的视图,这是多余的。
val button_start = view!!.findViewById<Button>(R.id.button_start_1_id)
您可以使用视图的 ID 轻松获取对您的视图/图像视图的引用。在您的情况下,您可以在视图 class 中调用背景 属性 并使用 resource.getDrawable(R.drawable.button_start1)[=14= 设置背景]
如果你的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_width="124dp"
android:layout_height="69dp"
android:onClick="button_start_pushed">
</ImageButton>
如果您使用的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.setImageResource(R.drawable.button_start1)
}
}
只需确保您的可绘制对象中有 button_start1 图标或 img,并且布局名称正确。
还有一点要注意:如果你有自己一致的命名约定,或者至少遵循 Kotlin 或 Java.
推荐的命名约定,会容易得多希望对您有所帮助!