Mam wymagane w moim projekcie dynamiczne rysowanie koła w czasie wykonywania. W tym celu używam ShapeDrawable do programowego tworzenia koła, ale niestety nie mogłem znaleźć żadnej klasy ani metod wewnątrz ShapeDrawable dla CircleShape, zamiast tego znalazłem tylko OvalShape()
. Uprzejmie proszę pomóż mi narysować okrąg za pomocą ShapeDrawable przez podanie średnicy lub promienia koła. Z góry dziękuję. Każdy rodzaj dostosowania byłby przydatny dla mnie, aby naprawić moje rozwiązanie.Koło rysowania programowo za pomocą Android ShapeDrawable
kod używam dla ShapeDrawable jest
public static ShapeDrawable drawCircle (Context context, int width, int height, int color) {
//////Drawing oval & Circle programmatically /////////////
ShapeDrawable oval = new ShapeDrawable (new OvalShape());
oval.setIntrinsicHeight (height);
oval.setIntrinsicWidth (width);
oval.getPaint().setColor (color);
return oval;
}
Code używając w MainActivity.java
if(Build.VERSION.SDK_INT >= 16) {
txtCount.setBackground (Util.drawCircle (MainActivity.this, 50, 50, getResources().getColor (R.color.yellow)));
txtHotelCount.setText ("20");
}else{
txtCount.setBackgroundDrawable (Util.drawCircle (MainActivity.this, 50, 50, getResources().getColor (R.color.yellow)));
txtHotelCount.setText ("20");
}
xml użyciem TextViewtxtCount
w moim projekcie, jest
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="@color/white">
<TextView
android:id="@+id/txt_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_grey"
android:gravity="center"
android:textSize="12sp"
android:padding="2dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_grey"
android:text="AVAILABLE"
android:layout_marginLeft="10dp"
android:gravity="center"
/>
</LinearLayout>
Ale nadal brak szczęścia nawet po ustawieniu tej samej szerokości i wysokości co 50. Właściwość zachowuje się jak owal.
jeśli "width == height', a następnie Oval powinien być Circle? – Blackbelt
Ale nie dostaję koła. Na przykład, jeśli przekazuję szerokość jako 42 i wysokość jako 23, otrzymuję koło. – Chandru
Wyświetl kod, który używa tej ShapeDrawable. Jaki jest rozmiar widoku, który go używa? – Karakuri