【问题标题】:include layout android - causing issue with button background color包括布局android - 导致按钮背景颜色问题
【发布时间】:2014-03-31 04:27:53
【问题描述】:

我有 1 个布局,这在我的项目中的所有 3 个选项卡(片段)中都很常见。所以我所做的是我为该公共结构创建了单独的布局,并将该布局包含在所有片段布局中。布局基本上有 4 个按钮,单击这些按钮时,我将更改按钮的背景颜色并相应地显示数据。

代码:-

@Override
    public View onCreateView(final LayoutInflater inflater,
            final ViewGroup container, final Bundle savedInstanceState) {
        final View rootView = inflater.inflate(R.layout.fragment,
                container, false);
        mLvIncomingCalls = (ListView) rootView.findViewById(R.id.lv);

        mBtnDay = (Button) rootView.findViewById(R.id.btnDay);
        mBtnWeek = (Button) rootView.findViewById(R.id.btnWeek);
        mBtnMonth = (Button) rootView.findViewById(R.id.btnMonth);
        mBtnAllTime = (Button) rootView.findViewById(R.id.btnAllTime);

        mBtnDay.setOnClickListener(btnDayClickListener);
        mBtnWeek.setOnClickListener(btnWeekClickListener);
        mBtnMonth.setOnClickListener(btnMonthClickListener);
        mBtnAllTime.setOnClickListener(btnAllTimeClickListener);

        mBtnDay.setBackgroundColor(getResources().getColor(
                android.R.color.holo_blue_light));

        return rootView;
    }

现在从快照中可以看出,问题是在默认情况下,在第二个选项卡中,所有按钮都是蓝色的。我不明白为什么所有按钮都变成蓝色,因为在所有片段中,我添加了上面的代码,默认情况下,Day 按钮的颜色仅为蓝色。

我需要为所有人创建单独的布局吗?

任何人对此有任何想法,请指导我。

【问题讨论】:

  • 您是否尝试过选择器作为按钮的背景可绘制对象?
  • 不,我没有尝试过选择器,因为对于所有按钮,我必须创建不同的选择器。所以我认为从代码方面处理它会更好。当有人单击一个按钮时,我会将其颜色更改为蓝色,其余部分将变为灰色。
  • 在 onCreateView 中确保其他按钮为灰色怎么样?
  • 因为布局 XML 中的默认颜色设置为 GREY。所以它必须是灰色的。你的意思是说在 onCreateView 中我需要再次设置所有颜色,即使它在 XML 文件中设置?
  • 您是否尝试过使用单独的布局,如果它有什么不同?

标签: android android-layout android-fragments android-button


【解决方案1】:

onCreateView 中,您可以将其他按钮颜色设置为灰色。这样绝对不应该发生。它发生的原因是一个谜,我相信系统以某种方式错误地回收了Drawable

【讨论】:

    【解决方案2】:

    放上TabChangedListener

    mTabHost.setOnTabChangedListener(new OnTabChangeListener() {
    
            @Override
            public void onTabChanged(String tabId) {
                // TODO Auto-generated method stub
                if (tabId.equals("first")) {
                    // here you can set "setBackgroundColor"
                }else if (tabId.equals("second")) {
                ......
                ......
            }
        }
    }
    

    我认为这会有所帮助。
    谢谢。

    【讨论】:

    • 如果我以这种方式实现它,那么每次它都会设置默认值。我不认为它会起作用。不过谢谢你的建议。
    猜你喜欢
    • 2015-07-29
    • 2013-08-06
    • 2015-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多