Tôi đang cố thêm huy hiệu vào một trong các nút Hoạt động của tôi. Ngay bây giờ tôi đang cố gắng làm xml. Nút với biểu tượng, nên trông như thế này:Định vị bong bóng huy hiệu ở phía trên bên trái của một nút
tôi đã thực hiện các bong bóng và các văn bản bên sử dụng một RelativeLayout
:
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/badge"
android:layout_centerInParent="true"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="2"
android:layout_centerInParent="true" />
</RelativeLayout>
Nhưng tôi không thể tìm thấy một cách để đặt nó ở đó và làm cho nó hoạt động trên chân dung và phong cảnh với cùng một xml.
Các Buttoms trong Activity
là như thế này:
<Button android:id="@+id/new_releases_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_button_selector"
android:text="@string/new_releases_title"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:gravity="center_vertical"
android:paddingLeft="12dp"
android:layout_marginTop="15dp"
android:layout_below="@id/coming_soon_button"
android:onClick="newReleaseClick"
android:layout_centerHorizontal="true" />
<Button android:id="@+id/top_sellers_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_button_selector"
android:text="@string/top_sellers_title"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:gravity="center_vertical"
android:paddingLeft="12dp"
android:layout_marginTop="15dp"
android:layout_below="@id/new_releases_button"
android:onClick="topSellersClick"
android:layout_centerHorizontal="true" />
và đây là hai nguồn:
Làm thế nào tôi nên làm như xml?
EDIT: cách tiếp cận tốt nhất cho đến nay, nhưng nó vẫn không hoạt động:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:id="@+id/discounts_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_button_selector"
android:text="@string/discounts_title"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:onClick="discountsClick"
android:layout_marginTop="40dp"
android:layout_marginLeft="20dp"/>
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|left">
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/badge"
android:layout_centerInParent="true"/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:text="20"
android:layout_centerInParent="true" />
</RelativeLayout>
</FrameLayout>
này trông giống như cách chính xác nhưng tôi vẫn không thể làm cho nó làm việc. Có nghĩa là thêm 'marginTop' và' marginLeft' vào huy hiệu, nhưng chúng phải là số âm. Vị trí này bên ngoài khung nhìn. Vì vậy, thay vào đó, tôi đã thêm tích cực 'marginTop' và' marginLeft' vào nút, nhưng những giá trị đó bị bỏ qua. Tôi chưa hiểu tại sao. Tôi sẽ chỉnh sửa câu hỏi với cách tiếp cận tốt nhất từ trước tới nay. – Macarse
vâng, đúng. không có lề âm cho hình ảnh (mặc dù tôi đã không cố gắng nếu điều đó sẽ làm việc tốt), bạn có thể làm việc với các lề trên/trái cho cả hình ảnh và nút như bạn muốn. nhưng nó có ý nghĩa theo cách này: vị trí trên bên trái của FrameLayout là góc trên bên trái của hình ảnh, do đó bạn cần phải di chuyển nút một chút sang phải và xuống. –
Cool, thêm 'android: layout_gravity =" top | left "' vào Button làm cho nó hoạt động, nhưng nó cắt nút vì chiều rộng và chiều cao của tôi từ bố mẹ tôi là "wrap_content". Tôi không muốn ép buộc thứ gì đó như 'android: layout_height =" 60dp "' trông đẹp. Bất kỳ ý tưởng nào về cách tốt hơn để giải quyết vấn đề này? – Macarse