คำถามติดแท็ก android-view

คำถามเกี่ยวกับมุมมองใน Android มุมมองอาจถูกกำหนดใน Android Layout XML หรือในโค้ด Java คำถามที่ใช้แท็กนี้เกี่ยวข้องกับการดูแนวทางปฏิบัติหรือคำแนะนำทั่วไป สำหรับมุมมองที่เฉพาะเจาะจงโปรดดูข้อมูลสำหรับแท็กนี้ สำหรับคำถามเกี่ยวกับการจัดวางให้ใช้แท็ก [android-layout]

10
เพิ่มและลบมุมมองใน Android แบบไดนามิกหรือไม่
ฉันจะเพิ่มและลบมุมมองเช่นTextViews จากแอพ Android เช่นบนหน้าจอผู้ติดต่อ Android ดั้งเดิมที่คุณกดไอคอนเล็ก ๆ ทางด้านขวาของฟิลด์และเพิ่มหรือลบฟิลด์ซึ่งประกอบด้วย a TextViewและeditTextView(จากอะไร ฉันสามารถเห็น) ตัวอย่างใด ๆ เกี่ยวกับวิธีการบรรลุเป้าหมายนี้?

11
การกำหนดขนาดของมุมมอง Android ที่รันไทม์
ฉันพยายามใช้แอนิเมชั่นกับมุมมองในแอพ Android ของฉันหลังจากสร้างกิจกรรมแล้ว ในการทำเช่นนี้ฉันต้องกำหนดขนาดปัจจุบันของมุมมองจากนั้นตั้งค่าภาพเคลื่อนไหวเพื่อปรับขนาดจากขนาดปัจจุบันเป็นขนาดใหม่ ส่วนนี้ต้องทำที่รันไทม์เนื่องจากมุมมองจะปรับขนาดให้แตกต่างกันขึ้นอยู่กับอินพุตจากผู้ใช้ เค้าโครงของฉันถูกกำหนดใน XML ดูเหมือนว่าจะเป็นงานง่ายและมีคำถาม SO มากมายเกี่ยวกับเรื่องนี้แม้ว่าจะไม่มีใครช่วยแก้ปัญหาของฉันได้ ดังนั้นบางทีฉันอาจพลาดบางอย่างที่ชัดเจน ฉันเข้าใจมุมมองของฉันโดย: ImageView myView = (ImageView) getWindow().findViewById(R.id.MyViewID); นี้ทำงานได้ดี แต่เมื่อโทรgetWidth(), getHeight(), getMeasuredWidth(), getLayoutParams().widthฯลฯ พวกเขากลับมาทุก 0. ฉันได้พยายามด้วยตนเองเรียกmeasure()ในมุมมองตามด้วยการโทรไปgetMeasuredWidth()แต่ไม่มีผล ฉันได้ลองเรียกเมธอดเหล่านี้และตรวจสอบวัตถุในดีบักเกอร์ในกิจกรรมของฉันonCreate()และในonPostCreate(). ฉันจะหาขนาดที่แน่นอนของมุมมองนี้ที่รันไทม์ได้อย่างไร

8
วิธีการเขียนโปรแกรมรอบมุมและกำหนดสีพื้นหลังแบบสุ่ม
ฉันต้องการปัดเศษมุมของมุมมองและเปลี่ยนสีของมุมมองตามเนื้อหาในรันไทม์ TextView v = new TextView(context); v.setText(tagsList.get(i)); if(i%2 == 0){ v.setBackgroundColor(Color.RED); }else{ v.setBackgroundColor(Color.BLUE); } v.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); v.setPadding(twoDP, twoDP, twoDP, twoDP); v.setBackgroundResource(R.drawable.tags_rounded_corners); ฉันหวังว่าการตั้งค่าให้วาดได้และสีจะทับซ้อนกัน แต่ก็ไม่ได้ สิ่งที่ฉันดำเนินการวินาทีคือพื้นหลังผลลัพธ์ มีวิธีใดบ้างในการสร้างมุมมองนี้โดยใช้โปรแกรมโปรดทราบว่าสีพื้นหลังจะไม่ถูกกำหนดจนกว่าจะรันไทม์ แก้ไข: ตอนนี้ฉันสลับระหว่างสีแดงและสีน้ำเงินเพื่อการทดสอบเท่านั้น หลังจากนั้นผู้ใช้จะเลือกสีได้ แก้ไข: tags_rounded_corners.xml: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:bottomRightRadius="2dp" android:bottomLeftRadius="2dp" android:topLeftRadius="2dp" android:topRightRadius="2dp"/> </shape>


5
ConstraintLayout: เปลี่ยนข้อ จำกัด โดยทางโปรแกรม
ฉันต้องการความช่วยเหลือ ConstraintSetฉันต้องการความช่วยเหลือเกี่ยวกับเป้าหมายของฉันคือเปลี่ยนข้อ จำกัด ของมุมมองในโค้ด แต่ฉันคิดไม่ออกว่าจะทำอย่างไรให้ถูกต้อง ฉันมี 4 TextViewวินาทีและหนึ่งImageViewและหนึ่งฉันต้องการกำหนดImageViewข้อ จำกัด เป็นหนึ่งในTextViews check_answer4 = (TextView) findViewById(R.id.check_answer4); check_answer1 = (TextView) findViewById(R.id.check_answer1); check_answer2 = (TextView) findViewById(R.id.check_answer2); check_answer3 = (TextView) findViewById(R.id.check_answer3); correct_answer_icon = (ImageView) findViewById(R.id.correct_answer_icon); ถ้าคำตอบแรกถูกต้องฉันต้องตั้งค่าข้อ จำกัด ของImageViewถึง app:layout_constraintRight_toRightOf="@+id/check_answer1" app:layout_constraintTop_toTopOf="@+id/check_answer1" หากคำตอบที่ 2 ถูกต้องฉันต้องกำหนดข้อ จำกัด ของ ImageViewถึง app:layout_constraintRight_toRightOf="@+id/check_answer2" app:layout_constraintTop_toTopOf="@+id/check_answer2" และอื่น ๆ

6
ประโยชน์ของการใช้ Fragments ใน Android แทนที่จะเป็น Views คืออะไร
เมื่อมีการพัฒนาสำหรับAndroidคุณสามารถตั้งค่าเป้าหมายของคุณ (หรืออย่างน้อย) SDK 4 (API 1.6) และเพิ่มแพคเกจเข้ากันได้ของหุ่นยนต์ (v4) Fragmentsเพื่อเพิ่มการสนับสนุนสำหรับ เมื่อวานนี้ฉันทำสิ่งนี้และนำFragmentsไปใช้เพื่อแสดงภาพข้อมูลจากคลาสที่กำหนดเองได้สำเร็จ คำถามของฉันคือสิ่งนี้มีประโยชน์อย่างไรในการใช้Fragmentsเมื่อเทียบกับเพียงแค่รับ View จากออบเจ็กต์ที่กำหนดเองและยังรองรับ API 1.5 ตัวอย่างเช่นฉันมีคลาส Foo.java: public class Foo extends Fragment { /** Title of the Foo object*/ private String title; /** A description of Foo */ private String message; /** Create a new Foo * @param title * …

8
เมธอด getView () ทำงานอย่างไรเมื่อสร้างอะแดปเตอร์แบบกำหนดเองของคุณเอง
คำถามของฉันคือ: LayoutInflater มีหน้าที่อะไรกันแน่? เหตุใดบทความทั้งหมดที่ฉันอ่านจึงตรวจสอบว่า convertview เป็นโมฆะหรือไม่ก่อน มันหมายความว่าอะไรเมื่อมันเป็นโมฆะและเมื่อมันไม่ใช่หมายความว่าอย่างไร พารามิเตอร์หลักที่วิธีนี้ยอมรับคืออะไร?

10
Android View.getDrawingCache คืนค่า null เพียง null
ใครก็ได้โปรดช่วยอธิบายให้ฉันฟังว่าทำไม public void addView(View child) { child.setDrawingCacheEnabled(true); child.setWillNotCacheDrawing(false); child.setWillNotDraw(false); child.buildDrawingCache(); if(child.getDrawingCache() == null) { //TODO Make this work! Log.w("View", "View child's drawing cache is null"); } setImageBitmap(child.getDrawingCache()); //TODO MAKE THIS WORK!!! } บันทึกเสมอว่าแคชการวาดเป็นโมฆะและตั้งค่าบิตแมปเป็น null? ฉันต้องวาดมุมมองก่อนที่จะตั้งค่าแคชหรือไม่? ขอบคุณ!

4
รับขอบของมุมมอง
ฉันจะรับมูลค่าขอบของมุมมองจากกิจกรรมได้อย่างไร มุมมองสามารถเป็นประเภทใดก็ได้ หลังจากค้นหาอยู่สักพักฉันก็พบวิธีในการเพิ่มมุมมอง แต่ไม่พบอะไรเลยใน Margin ใครสามารถช่วย? ฉันลองอะไรแบบนี้ ViewGroup.LayoutParams vlp = view.getLayoutParams(); int marginBottom = ((LinearLayout.LayoutParams) vlp).bottomMargin; ใช้งานได้ แต่ในโค้ดด้านบนฉันได้สันนิษฐานว่ามุมมองเป็นไฟล์LinearLayout. แต่ฉันต้องได้รับmarginแอตทริบิวต์แม้ว่าฉันจะไม่รู้ประเภทมุมมองก็ตาม

20
จะสร้างมุมมองที่มีมุมมนได้อย่างไร?
ฉันกำลังพยายามสร้างมุมมองใน Android ที่มีขอบมน วิธีแก้ปัญหาที่ฉันพบคือการกำหนดรูปร่างที่มีมุมโค้งมนและใช้เป็นพื้นหลังของมุมมองนั้น นี่คือสิ่งที่ฉันทำกำหนด Drawable ตามที่ระบุด้านล่าง: <padding android:top="2dp" android:bottom="2dp"/> <corners android:bottomRightRadius="20dp" android:bottomLeftRadius="20dp" android:topLeftRadius="20dp" android:topRightRadius="20dp"/> ตอนนี้ฉันใช้สิ่งนี้เป็นพื้นหลังสำหรับเลย์เอาต์ของฉันดังนี้: <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginBottom="10dp" android:clipChildren="true" android:background="@drawable/rounded_corner"> มันใช้งานได้ดีฉันเห็นว่ามุมมองมีขอบมน แต่เลย์เอาต์ของฉันมีมุมมองเด็กอื่น ๆ มากมายพูดว่า ImageView หรือไฟล์MapView. เมื่อฉันวางImageViewภายในเลย์เอาต์ด้านบนมุมของภาพจะไม่ถูกตัด / ครอบตัด แต่จะปรากฏเต็ม ฉันได้เห็นวิธีการแก้ปัญหาอื่น ๆ ที่จะทำให้การทำงานเช่นเดียวที่อธิบายที่นี่ แต่มีวิธีการกำหนดมุมโค้งมนสำหรับมุมมองหรือไม่และมุมมองย่อยทั้งหมดอยู่ในมุมมองหลักที่มีมุมโค้งมนหรือไม่?

6
sendUserActionEvent () เป็นโมฆะ
ฉันมี doozy จริงที่นี่ เมื่อฉันคลิกที่สปินเนอร์เปิดรายการเมนูหรือเปิดเมนูบริบทเมื่อคลิกนานฉันจะได้รับข้อความ Logcat เดียวกัน: 08-02 21:20:57.264: E/ViewRootImpl(31835): sendUserActionEvent() mView == null แท็กและข้อความเป็นViewRootImpl sendUserActionEvent() mView == nullฉันไม่พบสิ่งที่เป็นประโยชน์เกี่ยวกับเรื่องนี้บนเว็บ ฉันค้นหาแหล่งที่มาของ Android และพบข้อมูลอ้างอิงบางอย่างmViewแต่ไม่พบไฟล์ที่พิมพ์ข้อความบันทึกนี้ สำหรับการอ้างอิงฉันใช้ Samsung Galaxy S4 ที่ใช้ 4.2.2 หรือ API 17 ข้อความเดียวกันนี้จะไม่เกิดขึ้นเมื่อทำการดีบักบน Nexus 7 ที่ใช้ Android 4.3 ความคิดใด ๆ ? นี่เป็นปัญหาเฉพาะของ Samsung หรือไม่

1
ข้อความการหมุนของ Android: ฉันใช้ dynamiclayout.draw (canvas) แต่ไม่เคลื่อนไหวตามเส้นทางและไม่สามารถใช้ canvas.drawTextOnPath (ไดนามิกเลย์เอาต์)
ฉันใช้https://github.com/mdg-iitr/RotatingTextเวอร์ชันของตัวเองเพื่อแสดงวิดเจ็ตข้อความหมุน วิดีโอมีให้ใน GitHub นี้ช่วยให้คุณดูภาพเคลื่อนไหว ความคิดคือการตั้งค่าแถวของคำ แถวจะแสดงแถวหลังแถว แถวทั้งหมดหมุน (ทำตามคำพูด) แถวจะปรากฏขึ้นหลังจากแถวก่อนหน้าเมื่อภาพเคลื่อนไหวการหมุนของหลังสิ้นสุดลง ปัญหาของฉัน ฉันใช้ a DynamicLayoutเพื่อแสดงแถวของข้อความ ข้อควรจำ: แถวจะต้องหมุน ปัญหาของฉันคือ: canvas.drawTextOnPath(dynamicLayoutObject)เห็นได้ชัดว่าผมไม่สามารถใช้วิธีการ ดังนั้นสิ่งที่ฉันทำคือ: dynamicLayoutObjec.draw(canvas);. แต่ตอนนั้นไม่มีแอนิเมชันใด ๆ แท้จริงแล้วข้อความ (ดังนั้นDynamicLayoutที่มีอยู่) จะต้องหมุน ผลลัพธ์ที่คาดหวัง DynamicLayout(ในความเป็นจริงข้อความ) จะต้องเป็นภาพเคลื่อนไหว (หมุน) การหมุนสามารถพบได้ในภาพประกอบของ repo ต้นฉบับ Github ที่กำหนดไว้ในตอนต้นของคำถาม SO นี้ ( https://github.com/mdg-iitr/RotatingText ) คำถามของฉัน ฉันไม่ทราบวิธีที่จะทำให้DynamicLayout(และ / หรือข้อความ) หมุนไปตามเส้นทางของฉัน ตัวอย่างที่น้อยที่สุดและทดสอบได้ ฉันได้แก้ไขห้องสมุด RotatingText ดั้งเดิมเมื่อ 8 เดือนที่แล้ว เพื่อให้ง่ายขึ้น …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.