Как я могу динамически изменить цвет границы карты?
Я хотел бы изменить цвет границы моего просмотра карты в зависимости от содержимого. Можно ли каким-то образом получить доступ к XML-файлу из адаптера recyclerview и изменить цвет?
2 ответа
XML-файл из адаптераайзера и изменить цвет?
Нет. XML только для чтения. И вам не нужно прикасаться к нему, но используйте, если findViewById()
, найдите вид вашей карты и используйте ее методы, чтобы изменить цвет.
Это возможно с помощью Databinding
библиотека.
Допустим, что ваш контент User
и вам нужно изменить цвет вашего CardView
если он / она взрослый или ребенок. Таким образом, вы можете передать объект в своей деятельности или фрагменте следующим образом:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.main_activity);
User user = new User("Test", "User");
binding.setUser(user);
}
А затем добавьте data
тег и переменная в вашем XML
файл:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="com.example.User"/>
</data>
<android.support.v7.widget.CardView
android:background="@{user.isAdult ? @color/yellow : @color/gray }"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"/>
</android.support.v7.widget.CardView>
</layout>
Если вы хотите узнать больше, проверьте документацию: https://developer.android.com/topic/libraries/data-binding/index.html?hl=pt-br