Vista personalizzata come calcolatrice LCD
-
27-10-2019 - |
Domanda
Voglio progettare una vista personalizzata che assomiglia a questa:
Ho cercato una soluzione e quello che ho ottenuto è stato estendere un EditText
e personalizzalo. Ho esaminato l'esempio dell'editor di blocco note da Android, che non mi ha aiutato molto da quando voglio dividere il EditText
in almeno 4 parti.
Quello superiore è dove M
e DEG
è scritto, la parte giusta è dove viene scritto l'X10^012, la parte sinistra contiene l'attuale operazione e l'ultima parte è la più grande in cui si trovano le cifre.
Tuttavia, voglio che tu mi guidi nella giusta direzione per farlo correttamente e dirmi quale vista pre-costruita dovrei usare come classe base per progettare questa vista personalizzata. Qualsiasi aiuto sarà apprezzato.
Soluzione
Una possibilità è estendere il RelativeLayout
La classe e nel costruttore gonfiano un layout XML:
<RelativeLayout>
<TextView /> // M DEG(or 2 `TextView`)
<ImageButton /> //ImageView for the operation
<TextView /> //the digits
<TextView /> //the extra digits 10^12
</RelativeLayout>
Costume RelativeLayout
classe:
public class CustomView1 extends RelativeLayout {
public CustomView1(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.lcd_layout, this, true);
TextView part1 = (TextView) findViewById(R.id.the_id);
//other stuff
}
public CustomView1(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomView1(Context context) {
this(context, null);
}
}
Altri suggerimenti
Perché non progettarlo solo nel tuo layout? Impila un po ' LinearLayouts
sopra l'uno dell'altro?
modificare Esempio di domanda di confine:
Metti questo nella cartella Res/Drawable:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="@color/c1"
android:endColor="@color/c2"
android:angle="270" />
<stroke
android:width="1dp"
android:color="@color/stroke_color" />
</shape>
</item>
</selector>