如何从不同的活动更改视图的背景颜色
Posted
技术标签:
【中文标题】如何从不同的活动更改视图的背景颜色【英文标题】:How to change the background color on a view from different activity 【发布时间】:2018-11-08 11:01:30 【问题描述】:我需要更改导航标题的背景颜色,当我在 MainActivity 中的 findViewById() 时我得到空值。
这是导航标题,
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/nav_second_header_bg"
android:layout_
android:layout_
xmlns:tools="http://schemas.android.com/tools"
android:background="#00aeef"
android:gravity="bottom"
android:orientation="vertical"
android:padding="12dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
tools:context=".MainActivity">
<ImageView
android:id="@+id/school"
android:layout_
android:layout_
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/schatkamer" />
<TextView
android:id="@+id/nav_second_header_text"
android:layout_
android:layout_
android:layout_alignBottom="@+id/school"
android:layout_marginEnd="15dp"
android:layout_toStartOf="@+id/school"
android:text="account name"
android:layout_marginRight="15dp"
android:layout_toLeftOf="@+id/school" />
</RelativeLayout>
这是 onCreate MainActivity 中的代码
second_bar_header = findViewById(R.id.nav_second_header_bg); //this id returns null
second_bar_header.setBackgroundColor(Color.parseColor("00ff00"));
TextView tv = findViewById(R.id.nav_second_header_text); // this is null
tv.setText("hi");
【问题讨论】:
愚蠢的问题,你忘了先调用 setContentView 吗? 使用navigationView.findViewById()
。
是的,我当然设置了 ContentView...多么愚蠢的问题
【参考方案1】:
你应该尝试这样的事情
NavigationView navigationView = findViewById(R.id.you_nav_view);
navigationView.setNavigationItemSelectedListener(this);
View header = navigationView.getHeaderView(0);
TextView username = header.findViewById(R.id.nav_second_header_text);
username.setText("Hi");
second_bar_header = header.findViewById(R.id.nav_second_header_bg);
second_bar_header.setBackgroundColor(Color.parseColor("00ff00"));
【讨论】:
以上是关于如何从不同的活动更改视图的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章