Android では、デフォルトの CalendarView を使用しています。背景をライトグレーにしました。しかし、カレンダービューの月ビューの色を変えることはできますか?
質問する
7233 次
2 に答える
12
ご存知のように、TextViewはプライベートであり、それにアクセスするためのメソッドはないようです。
java.lang.reflect
私はそれをお勧めしませんが、パッケージを使用してこれを達成することができます:
try
{
CalendarView cv = (CalendarView) this.findViewById(R.id.calendarView1);
Class<?> cvClass = cv.getClass();
Field field = cvClass.getDeclaredField("mMonthName");
field.setAccessible(true);
try
{
TextView tv = (TextView) field.get(cv);
tv.setTextColor(Color.RED);
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
}
catch (NoSuchFieldException e)
{
e.printStackTrace();
}
于 2012-11-29T07:43:26.460 に答える
6
Android 5.x では、次のソリューションを使用しました (古いバージョンでも機能します)。
CalendarView cv = (CalendarView) this.findViewById(R.id.calendarView1);
ViewGroup vg = (ViewGroup) cv.getChildAt(0);
View child = vg.getChildAt(0);
if(child instanceof TextView) {
((TextView)child).setTextColor(getResources().getColor(R.color.black));
}
calendarview のレイアウトはここで見つけることができ、月名 TextView がレイアウトの最初の子であることに基づいています。
于 2015-04-15T09:55:14.833 に答える