【问题标题】:what is the new method for changing textview color in android programaticallly [duplicate]以编程方式在android中更改textview颜色的新方法是什么[重复]
【发布时间】:2018-10-21 19:43:01
【问题描述】:

XML

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
app:titleTextColor="#ffffff"
>
<TextView
    android:id="@+id/name"
    android:layout_width="275dp"
    android:layout_height="match_parent" />
</android.support.v7.widget.Toolbar>

活动

公共类 Chat 扩展 AppCompatActivity {

private TextView name;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);

    name = (TextView) findViewById(R.id.name);

    TextView textView = new TextView(R.layout.activity_chat);
    name.setText((getIntent().getStringExtra("Recievers_Name")));
    name.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));

我试过了

name.setTextColor(getResources().getColor(R.color.white));

  name.setTextColor(color.WHITE);

  name.setTextColor(Color.parseColor("#FFFFFF"));

但不工作......请帮助...................................... …………

【问题讨论】:

  • 当您谈论新版本时,请说明您使用的 API 版本。
  • 你可以试试这个name.setTextColor(ContextCompat.getColor(this, R.color.white)
  • 尝试其他颜色,如红色、蓝色、黑色。您正在尝试白色背景上的白色文本。
  • 用xml和java提供你的完整代码然后找出任何错误。

标签: java android xml text colors


【解决方案1】:

试试这个它正在工作..

public class LayoutActivity extends AppCompatActivity {
    TextView textView;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        textView=findViewById(R.id.textView);
        textView.setTextColor(Color.RED);
    }
}

【讨论】:

  • 您可以在课堂上任何地方访问,也可以制作本地级别。
  • 这是我一开始尝试的...没用
  • 我测试过它会起作用。
【解决方案2】:

试试这个方法,它在所有 Api 级别上都可以正常工作。

public int _getColor(int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 23) {
        return ContextCompat.getColor(this, id);
    } else {
        return getResources().getColor(id);
    }
}

【讨论】:

    【解决方案3】:

    我认为您在活动中缺少TextView 声明和初始化。
    将其声明为您的活动的变量,并在调用setContentView() 后对其进行初始化。

    public class MainActivity extends Activity {
    
        private TextView mNameTextView;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_launch);
            mNameTextView = (TextView)findViewById(R.id.name);
            // remaining codes
           mNameTextView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.black));
      }
    }
    

    【讨论】:

    • 我试过这个......不工作老兄......我显然已经声明并初始化了
    • 发布您的完整活动代码
    • 完成......
    【解决方案4】:

    getResources().getColor() 已弃用。使用这个

    TextView name = (TextView) findViewById(R.id.textview_name_id);
    name.setTextColor(ContextCompat.getColor(context, R.color.black));
    

    【讨论】:

    • getColor(int) 在空对象引用上
    • 检查更新的答案。
    • 应该用什么来代替活动?并且 getapplicationcontext 应该代替上下文吗?
    • 这只是一个例子。再次检查更新的答案。
    • 您似乎对getApplicationContext()getContext() 感到困惑。更多解释请参考此链接stackoverflow.com/questions/10641144/…
    【解决方案5】:
    textView.setTextColor(view.getResources().getColor(R.color.red_1));
    

    这应该适用于大多数 Api 版本

    【讨论】:

    • getResources().getColor() 已弃用。
    • 视图应该是什么
    猜你喜欢
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    相关资源
    最近更新 更多