Bonjour,
Je souhaite savoir pourquoi mes view personnalisées ne prennent pas automatiquement le style de mon application.
Voici une capture d'écran pour illustrer le problème (les rectangles noirs sont là uniquement pour cacher des infos...) :
Dans l'encadré bleu, des éléments ajouté via le designer. Dans l'encadré rouge, des éléments ajouté par du code via une classe et un fichier layout xml personnalisé.
Le code de la classe qui rend une ligne de l'encadré rouge :
Le contenu du fichier xml qui sert lors de l'inflate :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 public class AlarmView extends RelativeLayout { private Alarm m_alarm; private TextView m_alarmName_textview; private TextView m_alarmLoc_textview; private ToggleButton m_alarmOnOff_togglebutton; private ImageView m_alarmLoc_imageview; public AlarmView(Alarm alarm, Context context) { super(context); init(); setAlarm(alarm); } public AlarmView(Alarm alarm, Context context, AttributeSet attrs) { super(context, attrs); init(); setAlarm(alarm); } public AlarmView(Alarm alarm, Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); setAlarm(alarm); } private void refreshAlarmInfos(Alarm alarm) { m_alarmName_textview.setText(alarm.getName()); if(alarm.getLocation().length() <= 0) { m_alarmLoc_imageview.setVisibility(INVISIBLE); m_alarmLoc_textview.setVisibility(INVISIBLE); } else { m_alarmLoc_imageview.setVisibility(VISIBLE); m_alarmLoc_textview.setVisibility(VISIBLE); m_alarmLoc_textview.setText(alarm.getLocation()); } m_alarmOnOff_togglebutton.setEnabled(alarm.isEnabled()); } private void init() { inflate(getContext(), R.layout.alarm_view, this); m_alarmName_textview = (TextView)findViewById(R.id.alarm_name_textview_alarm_view); m_alarmLoc_textview = (TextView)findViewById(R.id.alarm_loc_textview_alarm_view); m_alarmOnOff_togglebutton = (ToggleButton)findViewById(R.id.alarm_onoff_togglebutton_alarm_view); m_alarmLoc_imageview = (ImageView)findViewById(R.id.alarm_loc_imageview_alarm_view); } public Alarm getAlarm() { return m_alarm; } public void setAlarm(Alarm alarm) { this.m_alarm = alarm; refreshAlarmInfos(m_alarm); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/pin_imageview" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/alarm_name_textview_alarm_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:ellipsize="end" android:maxLines="1" android:text="Alarm name" android:textAppearance="?android:attr/textAppearanceLarge" /> <LinearLayout android:layout_width="256dp" android:layout_height="wrap_content" > <ImageView android:id="@+id/alarm_loc_imageview_alarm_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:adjustViewBounds="true" android:contentDescription="@string/pin_contentdescription" android:maxWidth="32dp" android:src="@drawable/pin" /> <TextView android:id="@+id/alarm_loc_textview_alarm_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:lines="2" android:maxLines="1" android:text="LocationLocationLocationLocationLocationLocation" android:textAppearance="?android:attr/textAppearanceSmall" /> </LinearLayout> </LinearLayout> <ToggleButton android:id="@+id/alarm_onoff_togglebutton_alarm_view" android:layout_width="60dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textOff="@string/alarm_off" android:textOn="@string/alarm_on" /> </LinearLayout> <View android:layout_width="fill_parent" android:layout_height="1dp" android:layout_marginTop="5dp" android:background="@android:color/darker_gray" /> </LinearLayout>
Sans doute un détail bête mais étant débutant, j'ai du mal à trouver mon information.
Merci !
Partager