无法在工具栏中更新TextView和ImageView

时间:2017-05-18 14:25:46

标签: android layout toolbar

我想在工具栏中动态设置用户的头像和他的名字,但它不起作用。我试图用ButterKnife绑定它,而且View.findViewById没什么帮助。实际上,即使使用ButterKnife,视图也不为空,所以我不知道为什么它不起作用。但我发现,如果工具栏中只有一个没有布局的视图,则可以轻松查看更新。

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize">

        <LinearLayout
            android:id="@+id/toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/avatar"
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:layout_gravity="center_vertical"/>

            <TextView
                android:id="@+id/name"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_marginStart="@dimen/margin_medium_large"
                android:textSize="@dimen/text_size_medium"/>
        </LinearLayout>

    </android.support.v7.widget.Toolbar>

</android.support.design.widget.AppBarLayout>

初​​始化

...

@BindView(R.id.avatar)
ImageView mAvatar;
@BindView(R.id.name)
TextView mName;

...

private void initToolbar(String baseUrl, String name) {
    Picasso.with(getContext())
            .load(baseUrl)
            .fit()
            .centerCrop()
            .into(mAvatar);

    mName.setText(name);
}

1 个答案:

答案 0 :(得分:0)

尝试在没有Butterknife的情况下这样做:

View v = findViewById(R.id.toolbar_layout);
ImageView image = v.findViewById(R.id.avatar);