Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用绑定以编程方式设置按钮的android:可见性?_Android - Fatal编程技术网

Can';t使用绑定以编程方式设置按钮的android:可见性?

Can';t使用绑定以编程方式设置按钮的android:可见性?,android,Android,绑定类 data class MyName (var name: String= "", var nickname: String = "", var showButton: String = "gone") 活动\u main.xml <Button android:id="@+id/toggle_button" android:text="@string/toggle" android:layout_width="match_parent" a

绑定类

data class MyName (var name: String= "", var nickname: String = "", var showButton: String = "gone")
活动\u main.xml

<Button
     android:id="@+id/toggle_button"
     android:text="@string/toggle"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="center_horizontal"
     android:visibility="@={myName.showButton}"
     style="@style/Widget.AppCompat.Button.Colored"/>


当我在XML文件中指定硬代码“Goe”时,
android:visibility=“Goe”
,它可以正常工作,但我希望使用绑定以编程方式控制按钮的可见性。当我传递android显示的绑定变量“gone”时,
***/data binding error****msg:在android.widget.Button上找不到值类型为java.lang.String的属性“android:visibility”的getter。

据我所知,
android:visibility
attribute不支持双向绑定,因为没有事件机制在属性更改时通知

尝试使用单向绑定:

android:visibility="@{myName.showButton}"

上面链接的片段,在我问题的评论部分

将showButton类型更改为Boolean。并从数据标记中的xml导入视图,以访问xml内部

<data>
    <variable name="myName" type="com.example.aboutme.MyName"/>
    <import type="android.view.View"/>
</data>

在xml文件中,
android:visibility=“@{myName.showButton?View.VISIBLE:View.GONE}”
示例:

binding.studentClass = Student("Hasiba Yeasmin",false)
学生数据类(val名称:字符串,val可见:布尔值)


链接:

发生这种情况是因为无法使用字符串更改值的可见性。它采用一个特殊值,如
视图.VISIBLE
视图.GONE
视图.VISIBLE
。 试试这个:

data class MyName (var name: String= "", var nickname: String = "", var showButton: Boolean = false)
XML:



您可以在不绑定的情况下以编程方式正常执行。你有没有尝试过或者想通过绑定来实现?我知道如何使用setVisibility(),但我想知道如何使用绑定。你有没有尝试过用isVisible代替showButton?我在internet上搜索后得到了这个链接。看一看,我想这可能是你的解决方案。链接:谢谢@ShahadatHossain。这个链接回答了我的问题。
<layout>
    <data>
        <import type="android.view.View" />
    </data>

<Button
     android:id="@+id/toggle_button"
     android:text="@string/toggle"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_gravity="center_horizontal"
     android:visibility="@{myName.showButton? View.VISIBLE : View.GONE }"
     style="@style/Widget.AppCompat.Button.Colored"/>
</layout>