在弹出窗口

时间:2017-04-20 21:43:19

标签: android popup

我正在构建一个应用程序,并希望在弹出窗口中更改团队颜色。我使用ImageButtons向用户显示团队颜色。主活动中的一个按钮和弹出窗口中的四个按钮。当我在弹出窗口中单击一个时,我可以切换背景,但当我关闭弹出窗口并再次打开它时,弹出窗口中的按钮已被重置。

如何在没有重置的情况下关闭弹出窗口?

public void colorchange(final View view){

    layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
    ViewGroup container = (ViewGroup) layoutInflater.inflate(R.layout.popwindow, null);
    relativeLayout = (RelativeLayout) findViewById(R.id.popup);
    popupWindow = new PopupWindow(container, relativeLayout.getWidth(), relativeLayout.getHeight(), true);
    popupWindow.showAtLocation(relativeLayout, Gravity.NO_GRAVITY, (int)relativeLayout.getX(),(int)relativeLayout.getY());
    ImageButton narancs = (ImageButton) container.findViewById(R.id.imgbutton1);

    container.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            popupWindow.dismiss();
            return false;
        }
    });

    narancs.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Drawable asds = v.getBackground();
            Log.d("hatter", String.valueOf(asds));
            v.setBackgroundResource(R.drawable.bluebutton);
            view.setBackgroundResource(R.drawable.orangebutton);
            Log.d("hatter", String.valueOf(view.getBackground()));
            //popupWindow.dismiss();
        }
    });

}

此代码在mainactivity按钮单击事件上运行。

1 个答案:

答案 0 :(得分:0)

如果我理解你的答案,你想"保存"单击按钮背景颜色。如果是这样,您可以使用共享首选项(Android Developer - Shared Preferences)在点击时存储所选颜色。在活动中,您可以从共享首选项中设置按钮的颜色。

单击

SharedPreferences settings = context.getSharedPreferences(PREF_FILE, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(key, value);
editor.apply();

之后,您可以加载此值以设置背景的颜色

SharedPreferences settings = context.getSharedPreferences(PREF_FILE, 0);
//You can use a switch or if else
if(settings.getString(key, defValue).toUppercase.equals("BLUE")){
//set Color Blue as Background
v.setBackgroundResource(R.drawable.bluebutton);
}else if(...)

我希望这会有所帮助:)