首页 > 解决方案 > Android Studio 处理多用户。如何修改布局的可点击参数?

问题描述

我是一名初学者开发人员,为不同用户的布局开发应用程序。在这个应用程序中有两种用户,一种可以读取属性,另一种可以读取和写入属性。

我必须在主布局中动态添加几行,为此我使用了 inflate 过程。

这里的行布局:

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/row"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:onClick="sendMessage">

....
</androidx.constraintlayout.widget.ConstraintLayout>

现在我想根据用户的类型将可点击属性更改为 true/false。(如果用户是写用户,他可以单击布局以启动新活动并修改行对象的属性)。请注意,我想使用一个活动来处理两个用户,因为通常我只需要修改几个属性,例如 3 个可点击属性和 3 个可见属性。所以我在string.xml中写了这些字符串:

<string name="user_0_clickable">false</string>
<string name="user_1_clickable">true</string>

我想动态添加行并根据字符串“user_0_clickable”或“user_1_clickable”更改它们的可点击属性(登录后由意图传递)。有可能吗?如果我必须更改很少的属性,这是我范围的最佳方式吗?

标签: javaandroidxmlandroid-studio

解决方案


您的User对象将有一些字段,例如userTypereadWriteType具有某种布尔值或整数值,例如 0 或 1。因此,在您的或ActivityFragment(如果您正在使用)中,您基本上是在设置数据(类似 等)。 ),只需执行以下操作:( 或 do ,您使用的任何字段来指示 的读取或写入状态)然后: 然后继续。 我认为您不需要使用with字段。 您不需要动态膨胀任何组件,只需将所有组件预先放在 XML 布局中,然后只需分配ViewHolderAdapterRecyclerViewtextView.setText("user.getName());swich(user.getUserType())switch(user.getReadWriteType())Usercase userWrite: whateverTextField.setEditable(true); whateverButton.setClickable(true); break;
string.xmluser_0_clickable
textFields根据您的要求,不可编辑和按钮不可见或不可点击。


推荐阅读