动态更改自定义操作栏上的ImageView源

时间:2016-11-22 01:51:54

标签: android android-actionbar imageview

我有一个使用xml的自定义操作栏。我想根据位置动态更改左图像。该位置等于switch语句的情况,因此不是问题。我做错了什么?

    ImageView universityLogo;
    Global global = new Global();
    View v2 = View.inflate(this, R.layout.my_action_bar, null);
    universityLogo = (ImageView)v2.findViewById(R.id.buttonLeft);
    switch(global.getLocation()){
        case "33613":
            universityLogo.setImageResource(R.drawable.diploma);
    }
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayShowHomeEnabled(false);
    View mActionBarView = getLayoutInflater().inflate(R.layout.my_action_bar, null);
    actionBar.setCustomView(mActionBarView);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
}

和xml     

<ImageButton
    android:id="@+id/buttonRight"
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp"
    android:layout_height="30dp"
    android:layout_width="30dp"
    android:layout_alignParentRight="true"
    android:background="@drawable/location"
    />
<ImageView
    android:id="@+id/buttonLeft"
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp"
    android:layout_height="30dp"
    android:layout_width="30dp"
    android:layout_alignParentLeft="true"
    />
<ImageView
    android:id="@+id/logo"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/actionbarlogo"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

为什么你两次使用下线?

 View mActionBarView = getLayoutInflater().inflate(R.layout.my_action_bar, null);

您设置了视图并再次初始化该视图。你的代码应该如下

mageView universityLogo;
    Global global = new Global();
    View v2 = View.inflate(this, R.layout.my_action_bar, null);
    universityLogo = (ImageView)v2.findViewById(R.id.buttonLeft);
    switch(global.getLocation()){
        case "33613":
            universityLogo.setImageResource(R.drawable.diploma);
    }
    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayShowHomeEnabled(false);

    actionBar.setCustomView(mActionBarView);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);