ใน Android ฉันจะตั้งค่าระยะขอบเป็น dp โดยทางโปรแกรมได้อย่างไร
ในนี้ , นี้และนี้ด้ายฉันพยายามที่จะหาคำตอบเกี่ยวกับวิธีการตั้งค่าระยะขอบบนมุมมองเดียว อย่างไรก็ตามฉันสงสัยว่าถ้าไม่มีวิธีที่ง่ายกว่านี้ ฉันจะอธิบายว่าทำไมฉันจึงไม่ต้องการใช้วิธีนี้: ฉันมีปุ่มที่กำหนดเองซึ่งขยายปุ่ม หากพื้นหลังถูกตั้งค่าเป็นอย่างอื่นนอกเหนือจากพื้นหลังเริ่มต้น (โดยการเรียกอย่างใดอย่างหนึ่งsetBackgroundResource(int id)หรือsetBackgroundDrawable(Drawable d)) ฉันต้องการให้ระยะขอบเป็น 0 ถ้าฉันเรียกสิ่งนี้ว่า public void setBackgroundToDefault() { backgroundIsDefault = true; super.setBackgroundResource(android.R.drawable.btn_default); // Set margins somehow } ฉันต้องการให้อัตรากำไรขั้นต้นที่จะรีเซ็ต -3dp (ฉันได้อ่านที่นี่วิธีการแปลงจากพิกเซล DP, ดังนั้นเมื่อผมรู้ว่าอัตรากำไรที่ตั้งอยู่ใน px ผมสามารถจัดการแปลงตัวเอง) แต่เนื่องจากสิ่งนี้ถูกเรียกในCustomButtonชั้นเรียนผู้ปกครองอาจแตกต่างจาก LinearLayout ถึง TableLayout และฉันไม่อยากให้เขาได้รับผู้ปกครองของเขาและตรวจสอบตัวอย่างของผู้ปกครองนั้น นั่นจะเป็นสิ่งที่ไม่มีประสิทธิภาพเลยทีเดียว นอกจากนี้เมื่อโทร (โดยใช้ LayoutParams) parentLayout.addView(myCustomButton, newParams)ฉันไม่รู้ว่าสิ่งนี้เพิ่มเข้าไปในตำแหน่งที่ถูกต้อง (ยังไม่ได้ลอง) ให้พูดปุ่มกลางของแถวที่ห้า คำถาม: มีวิธีใดที่ง่ายกว่าในการตั้งค่าระยะขอบของปุ่มเดียวโดยทางโปรแกรมนอกเหนือจากการใช้ LayoutParams? แก้ไข: …