Tôi cần vẽ một hình chữ nhật tròn trong giao diện người dùng Android. Có cùng hình chữ nhật tròn cho TextView
và EditText
cũng sẽ hữu ích.
Tôi cần vẽ một hình chữ nhật tròn trong giao diện người dùng Android. Có cùng hình chữ nhật tròn cho TextView
và EditText
cũng sẽ hữu ích.
Câu trả lời:
Trong bố cục của bạn xml làm như sau:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/holo_red_dark" />
<corners android:radius="32dp" />
</shape>
Bằng cách thay đổi, android:radius
bạn có thể thay đổi số lượng "bán kính" của các góc.
<solid>
được sử dụng để xác định màu sắc của drawable.
Bạn có thể sử dụng thay thế android:radius
với android:bottomLeftRadius
, android:bottomRightRadius
, android:topLeftRadius
và android:topRightRadius
để xác định bán kính cho mỗi góc.
Tôi nghĩ rằng, đây là bạn chính xác cần thiết.
Ở đây tệp drawable (xml) tạo hình chữ nhật tròn. round_rect_shape.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#ffffff" />
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
</shape>
Đây là tệp bố cục: my_layout.xml
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/round_rect_shape"
android:orientation="vertical"
android:padding="5dp" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Something text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="#ff0000" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
</LinearLayout>
-> Trong đoạn mã trên, linearLayout có nền (Đó là vai trò chính cần đặt để tạo hình chữ nhật tròn). Vì vậy, bạn có thể đặt bất kỳ chế độ xem nào như TextView, EditText ... trong linearLayout đó để xem nền là hình chữ nhật tròn cho tất cả.
android:background="@drawable/round_rect_shape"
trong tệp XML của mình, nhưng sử dụng các màu nền khác nhau bằng cách đặt thuộc tính khác. Có tùy chọn nào ngoại trừ việc tạo một drawable giống hệt nhau cho mỗi màu không?
Trong monodroid
, bạn có thể làm như thế này cho hình chữ nhật tròn, và sau đó giữ nó như một lớp cha editbox
và các tính năng bố trí khác có thể được thêm vào.
class CustomeView : TextView
{
public CustomeView (Context context, IAttributeSet ) : base (context, attrs)
{
}
public CustomeView(Context context, IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle)
{
}
protected override void OnDraw(Android.Graphics.Canvas canvas)
{
base.OnDraw(canvas);
Paint p = new Paint();
p.Color = Color.White;
canvas.DrawColor(Color.DarkOrange);
Rect rect = new Rect(0,0,3,3);
RectF rectF = new RectF(rect);
canvas.DrawRoundRect( rectF, 1,1, p);
}
}
}
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:padding="10dp"
android:shape="rectangle">
<solid android:color="@color/colorAccent" />
<corners
android:bottomLeftRadius="500dp"
android:bottomRightRadius="500dp"
android:topLeftRadius="500dp"
android:topRightRadius="500dp" />
</shape>
Bây giờ, trong phần tử bạn muốn sử dụng hình dạng này, chỉ cần thêm:
android:background="@drawable/custom_round_ui_shape"
Tạo một XML mới trong drawable có tên "custom_round_ui_shape"
Sử dụng CardView cho hình chữ nhật tròn. CardView cung cấp nhiều chức năng hơn như cardCornerRadius, cardBackgroundColor, cardElevation và nhiều hơn nữa. CardView làm cho UI phù hợp hơn sau đó có thể vẽ hình chữ nhật tròn tùy chỉnh.
Bạn chỉ có thể xác định nền xml mới trong thư mục drawables
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="enter_your_desired_color_here" />
<corners android:radius="enter_your_desired_radius_the_corners" />
</shape>
Sau này, chỉ cần đưa nó vào TextView hoặc EditText của bạn bằng cách xác định nó trong nền.
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="80dp"
android:background="YOUR_FILE_HERE"
Android:layout_weight="1"
android:gravity="center"
android:text="TEXT_HERE"
android:textSize="40sp" />
Right_click trên drawable và tạo tệp xml bố cục mới trong tên của ví dụ button_background.xml. sau đó sao chép và dán đoạn mã sau. Bạn có thể thay đổi nó theo nhu cầu của bạn.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="14dp" />
<solid android:color="@color/colorButton" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
<size
android:width="120dp"
android:height="40dp" />
</shape>
Bây giờ bạn có thể sử dụng nó.
<Button
android:background="@drawable/button_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white" />
<corners android:radius="4dp" />
</shape>