【问题标题】:Why setAlpha worked in min sdk 8, but don't work on min sdk 9?为什么 setAlpha 在 min sdk 8 中有效,但在 min sdk 9 中无效?
【发布时间】:2012-11-23 04:49:41
【问题描述】:

我正在尝试将 Alpha 设置为我的 rowView,但我收到一条错误消息,提示我需要最小 sdk 11。

View rowView = inflater.inflate(R.layout.main, parent, false);

好吧,我知道解决此问题的方法之一是将最小 sdk 更改为 11,但我不想这样做,因为我需要最小 sdk 为 8/9。

很有趣,我的朋友在 min sdk 8,target 16 中尝试了rowView.setAlpha(-80),它运行良好,但它无法在我的 min sdk 9,target 16 中运行。

我尝试使用 rowView.getBackground().setAlpha(-80) 解决问题,但没有 alpha 效果。

有人能告诉我为什么它在 sdk 8 中工作,而不是 9 吗?可能出了什么问题?

*更新

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.knowledge_main, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);

【问题讨论】:

  • 试试这个... rowView.getBackground().setAlpha(-80)
  • @Sandy09 抱歉,之前打错了。我实际上尝试了rowView.getBackground().setAlpha(-80) 并且没有alpha效果。
  • 你为什么使用负值?根据文档,Drawable.setAlpha() 参数应该是从 0 到 255

标签: android android-2.2-froyo android-sdk-2.3


【解决方案1】:

在 Inflate 时可能会出现一些问题,两个代码都可以正常工作

    View mView = getLayoutInflater().inflate(R.layout.activity_main, null);
    mView.setBackground(getResources().getDrawable(R.drawable.ic_launcher));
    setContentView(mView);
    mView.getBackground().setAlpha(-160);


    View mView2 = (View)((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.activity_main, null);
    mView2.setBackground(getResources().getDrawable(R.drawable.ic_launcher));
    setContentView(mView2);
    mView2.getBackground().setAlpha(-160);

【讨论】:

  • 嘿,您的代码运行良好。谢谢。 :) 它对背景有 alpha 效果。但是,它并没有达到我想要的效果,因为它只是在背景上,而不是上面的文字。我已经更新了上面的代码。你能帮我看看吗?
猜你喜欢
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2011-09-29
  • 2021-08-05
  • 2011-03-12
  • 2015-09-12
相关资源
最近更新 更多