Reputation: 1252
i want to create a view like this i have posted in screen shot, in circle shape of layout with one image view with some background colour and one text view just below the image view with white background and the parent of the complete should be in blue colour as shown in picture, i have tried but not able to get the result I will post my code below, please guide me? my required view is
and i am getting this output with the layout i created
my layout code is
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parent_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#202230"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<RelativeLayout
android:id="@+id/circle_layout"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/whitecircle" >
<RelativeLayout
android:id="@+id/circle_layoutinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/rating_viewtv"
android:layout_alignParentTop="true"
android:background="@drawable/circletwo"
android:layout_marginTop="1dp"
android:layout_centerHorizontal="true" >
<TextView
android:id="@+id/ratingcup_viewtv_fonts"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="M"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@android:color/holo_purple" />
</RelativeLayout>
<View android:id="@+id/seprater_viewtv"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_above="@+id/rating_viewtv"
android:background="#2b2c3a" />
<TextView
android:id="@+id/rating_viewtv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="3dp"
android:text="4.5"
android:textColor="@android:color/holo_purple" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
and my whitecircle.xml is
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="2"
android:useLevel="false">
<solid android:color="@color/white" />
</shape>
and my circletwo.xml is
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:innerRadius="0dp"
android:shape="ring"
android:thicknessRatio="2"
android:useLevel="false">
<solid android:color="#ff9546" />
</shape>
Upvotes: 3
Views: 2722
Reputation: 24417
Change your declaration of the circle_layoutinner RelativeLayout to specify a height in dp instead of wrap_content and get rid of the marginTop:
<RelativeLayout
android:id="@+id/circle_layoutinner"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_above="@+id/rating_viewtv"
android:layout_alignParentTop="true"
android:background="@drawable/circle_inset_drawable"
android:layout_centerHorizontal="true" >
define circle_inset_drawable.xml to offset the orange circle by the correct amount:
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/circletwo"
android:insetTop="20dp"
android:visible="true" />
insetTop should be the height of circle_layout minus the height of circle_layoutinner
You can set the color of the drawable in code like this. You just need to start with your layout object and then keep on burrowing down through the objects until you get to the one that lets you set the color:
RelativeLayout rl = (RelativeLayout)findViewById(R.id.circle_layoutinner);
InsetDrawable id = (InsetDrawable)rl.getBackground();
GradientDrawable gd = (GradientDrawable)id.getDrawable(); // API 19+ only!
gd.setColor(0xffff0000); // set to red
Or you can create the InsetDrawable in code like this:
RelativeLayout rl = (RelativeLayout)findViewById(R.id.circle_layoutinner);
GradientDrawable gd = (GradientDrawable)getResources().getDrawable( R.drawable.circletwo );
gd.setColor(0xffff0000); // set to red
int dpInPixels = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());
InsetDrawable id = new InsetDrawable(gd, 0, dpInPixels, 0, 0);
rl.setBackground(id);
Upvotes: 3
Reputation: 2737
Try to create the image with orange n white colour u expected.
set it as background to LL or RL
Simply use an ImageView and Textview with appropriate dimension to display the info.
Upvotes: 0