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

โครงร่างกำหนดโครงสร้างที่มองเห็นได้สำหรับส่วนติดต่อผู้ใช้เช่น UI สำหรับกิจกรรมส่วนหรือวิดเจ็ตแอป

6
Android: xml เลย์เอาต์ทางเลือกสำหรับโหมดแนวนอน
ฉันจะมีเลย์เอาต์เดียวสำหรับแนวนอนและอีกแบบสำหรับแนวตั้งได้อย่างไร ฉันต้องการใช้ความกว้างพิเศษและประหยัดพื้นที่แนวตั้งเมื่อผู้ใช้หมุนโทรศัพท์ไปด้านข้าง

6
RelativeLayout ใช้แบบเต็มหน้าจอสำหรับ wrap_content
เหตุใด FOOBARZ จึงถูกจัดวางไว้ด้านล่างสุดเมื่อไม่มีองค์ประกอบกล่าวlayout_height="fill_parent"อีกนัยหนึ่งองค์ประกอบทั้งหมดเป็น wrap_content สำหรับความสูง <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/feed_u" android:layout_width="50dip" android:layout_height="50dip" android:layout_marginLeft="5dip" android:scaleType="centerCrop" android:drawableTop="@android:drawable/presence_online" android:text="U" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/feed_u"> <ImageView android:id="@+id/feed_h" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/btn_minus" /> <ImageView android:id="@+id/feed_ha" android:layout_toLeftOf="@id/feed_h" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/btn_plus" /> <TextView android:id="@+id/feed_t" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Title"> </TextView> <TextView android:id="@+id/feed_a" …

2
fitSystemWindows ทำอะไรกันแน่?
ฉันกำลังดิ้นรนเพื่อทำความเข้าใจแนวคิดที่fitsSystemWindowsว่าขึ้นอยู่กับมุมมองที่ทำในสิ่งที่แตกต่างกัน ตามเอกสารอย่างเป็นทางการมันคือไฟล์ แอตทริบิวต์ภายในบูลีนเพื่อปรับเค้าโครงมุมมองตามหน้าต่างระบบเช่นแถบสถานะ ถ้าเป็นจริงปรับขยายในมุมมองนี้ไปยังพื้นที่ลาสำหรับ Windows ตอนนี้ตรวจสอบView.javaคลาสที่ฉันเห็นว่าเมื่อตั้งค่าtrueเป็นหน้าต่างที่แทรก (แถบสถานะแถบนำทาง ... นี่คือส่วนที่เกี่ยวข้องของรหัส: private boolean fitSystemWindowsInt(Rect insets) { if ((mViewFlags & FITS_SYSTEM_WINDOWS) == FITS_SYSTEM_WINDOWS) { mUserPaddingStart = UNDEFINED_PADDING; mUserPaddingEnd = UNDEFINED_PADDING; Rect localInsets = sThreadLocal.get(); if (localInsets == null) { localInsets = new Rect(); sThreadLocal.set(localInsets); } boolean res = computeFitSystemWindows(insets, localInsets); mUserPaddingLeftInitial = localInsets.left; …

5
ตั้งค่าความสูงของ LayoutParams โดยทางโปรแกรมเป็นพิกเซลที่ไม่ขึ้นกับความหนาแน่น
มีวิธีใดบ้างในการตั้งค่าความสูง / ความกว้างของLayoutParamsเป็นพิกเซลที่ไม่ขึ้นกับความหนาแน่น (dp) ดูเหมือนว่าความสูง / ความกว้างเมื่อตั้งค่าโดยใช้โปรแกรมจะเป็นพิกเซลและไม่ใช่ dp

10
CardView layout_width =“ match_parent” ไม่ตรงกับความกว้างของ RecyclerView หลัก
ฉันมีส่วนที่มี RecyclerView พร้อม layout_width = "match_parent": <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity$PlaceholderFragment" /> รายการใน RecyclerView คือ CardView ที่มี layout_width = "match_parent": <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="20dp" card_view:cardCornerRadius="4dp"> <TextView android:layout_gravity="center" android:id="@+id/info_text" android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" android:textAppearance="?android:textAppearanceLarge"/> </android.support.v7.widget.CardView> ฉันขยายมุมมองรายการดังต่อไปนี้: public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) …

12
แก้ไขข้อความที่โฟกัสได้ภายใน ListView
จนถึงตอนนี้ฉันใช้เวลาประมาณ 6 ชั่วโมงและไม่มีอะไรเหลือเลยนอกจากสิ่งกีดขวางบนถนน หลักฐานทั่วไปคือมีบางแถวในListView(ไม่ว่าจะสร้างโดยอะแด็ปเตอร์หรือเพิ่มเป็นมุมมองส่วนหัว) ที่มีEditTextวิดเจ็ตและไฟล์Button. สิ่งที่ฉันต้องการทำก็คือสามารถใช้ jogball / ลูกศรเพื่อนำทางตัวเลือกไปยังแต่ละรายการเหมือนปกติ แต่เมื่อฉันไปที่แถวใดแถวหนึ่ง - แม้ว่าฉันจะต้องระบุแถวอย่างชัดเจน - ที่มีโฟกัสได้ เด็กฉันต้องการให้เด็กคนนั้นโฟกัสแทนที่จะระบุตำแหน่งด้วยตัวเลือก ฉันได้ลองใช้ความเป็นไปได้มากมายและจนถึงตอนนี้ก็ยังไม่มีโชค รูปแบบ: <ListView android:id="@android:id/list" android:layout_height="fill_parent" android:layout_width="fill_parent" /> มุมมองส่วนหัว: EditText view = new EditText(this); listView.addHeaderView(view, null, true); สมมติว่ามีรายการอื่นในอะแด็ปเตอร์การใช้ปุ่มลูกศรจะย้ายส่วนที่เลือกขึ้น / ลงในรายการตามที่คาดไว้ แต่เมื่อไปที่แถวส่วนหัวจะแสดงด้วยตัวเลือกและไม่มีวิธีใดที่จะมุ่งเน้นไปที่การEditTextใช้ jogball หมายเหตุ: การแตะที่EditText จะโฟกัสไปที่จุดนั้น แต่ต้องอาศัยหน้าจอสัมผัสซึ่งไม่ควรเป็นข้อกำหนด ListViewเห็นได้ชัดว่ามีสองโหมดในเรื่องนี้: 1. setItemsCanFocus(true)ตัวเลือกจะไม่ปรากฏขึ้น แต่EditTextสามารถรับโฟกัสได้เมื่อใช้ลูกศร อัลกอริธึมการค้นหาโฟกัสยากที่จะคาดเดาและไม่มีการตอบกลับด้วยภาพ (ในแถวใด ๆ : มีลูกที่โฟกัสได้หรือไม่มี) รายการใดที่ถูกเลือกซึ่งทั้งสองอย่างนี้สามารถให้ประสบการณ์ที่ไม่คาดคิดแก่ผู้ใช้ได้ …

17
เป็นไปได้ไหมที่จะใช้ VectorDrawable ในปุ่มและ TextViews โดยใช้ android: DrawableRight
เมื่อฉันใช้เนื้อหา VectorDrawable ใน textview หรือ imageview ฉันพบปัญหารันไทม์เมื่อใช้ "android: DrawableRight" / "android: DrawableEnd" / "android: DrawableStart" / "android: DrawableLeft" แอพจะคอมไพล์ได้ดีโดยไม่มีคำเตือนใด ๆ ฉันใช้ Gradle 1.5 รองรับไลบรารี 23.2 ('com.android.support:appcompat-v7:23.2.0') สิ่งที่ฉันได้พบคือฉันสามารถกำหนด SVG ใน Java โดยทางโปรแกรมได้โดยไม่เกิดปัญหาเช่นนี้ TextView tv = (TextView) findViewById(R.id.textView); tv.setCompoundDrawablesWithIntrinsicBounds(null,null, getResources().getDrawable(R.drawable.ic_accessible_white_36px),null); (ฉันสงสัยว่านี่เป็นข้อบกพร่องของไลบรารีการสนับสนุนสำหรับ 23.2) แต่เป็นไปได้ไหมที่จะใช้ drawableRight และอื่น ๆ สำหรับเนื้อหา SVG นี่คือเค้าโครงของฉัน <?xml version="1.0" encoding="utf-8"?> …

14
ไม่สามารถแก้ไขสัญลักษณ์ '? attr / actionBarSize' หลังจากอัปเดต Android Studio จาก 2.3 เป็น 3.0 สำหรับ buildToolsVersion '26 .0.2 '
หลังจากอัปเดต Android Studio จาก 2.3 เป็น 3.0 ฉันเปลี่ยนbuildToolsVersionจาก 26.0.0 เป็น 26.0.2 และหลังจากนั้นฉันก็ได้รับข้อผิดพลาดนี้: Cannot resolve symbol '?attr/actionBarSize รหัส Xml: <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:titleTextColor="@android:color/white"/> อ้างอิง: compile 'com.android.support:appcompat-v7:26.1.0' compile 'com.android.support:design:26.1.0'

9
ความแตกต่างระหว่าง onCreateView และ onViewCreated ใน Fragment
อะไรคือความแตกต่างที่สำคัญระหว่างสองวิธีนี้? เมื่อฉันสร้าง TextView ฉันควรใช้อันอื่นเพื่อประสิทธิภาพหรือไม่? แก้ไข: อะไรคือความแตกต่างจาก onCreateView() { root = some view View v = new View(some context); root.add(v); return root; } onViewCreated() { View v = new View(some context); getView().add(v); }

8
Google จัดการกับสิ่งนี้ได้อย่างไร Slide ActionBar ในแอปพลิเคชัน Android
ฉันต้องการใช้สิ่งนี้ (การนำทางด้านข้าง) ในแอปของฉันเองมีใครรู้บ้างว่า Google จัดการกับสิ่งนี้ได้อย่างไร ดูเหมือนว่าพวกเขาจะดึงหน้าต่างปัจจุบันออกด้านข้างและนำทางบินเข้ามาเอง

28
วิธีตั้งค่าไอคอนและข้อความตรงกลางในปุ่ม Android โดยตั้งค่าความกว้างเป็น "เติมแม่"
ฉันต้องการมีปุ่ม Android ที่มีไอคอน + ข้อความอยู่ตรงกลาง ฉันใช้แอตทริบิวต์ drawableLeft การตั้งค่าภาพนี้ทำงานได้ดีถ้าปุ่มมีความกว้างของแต่ฉันต้องการที่จะยืดความกว้างสูงสุดดังนั้นฉันจะใช้ความกว้าง"wrap_content" "fill_parent"สิ่งนี้จะย้ายไอคอนของฉันไปทางซ้ายของปุ่มตรงและฉันต้องการให้ทั้งไอคอนและข้อความอยู่กึ่งกลางภายในปุ่ม ฉันลองตั้งค่าช่องว่างภายใน แต่อนุญาตให้ให้ค่าคงที่เท่านั้นดังนั้นจึงไม่ใช่สิ่งที่ฉันต้องการ ฉันต้องการให้ไอคอน + ข้อความอยู่ตรงกลาง <Button android:id="@+id/startTelemoteButton" android:text="@string/start_telemote" android:drawableLeft="@drawable/start" android:paddingLeft="20dip" android:paddingRight="20dip" android:width="fill_parent" android:heigh="wrap_content" /> ข้อเสนอแนะใด ๆ เกี่ยวกับวิธีที่ฉันจะบรรลุเป้าหมายนั้น?


11
วิธีระบุ id เมื่อใช้รวมในไฟล์ xml เค้าโครง
ในไฟล์ xml เลย์เอาต์ของฉันฉันได้รวมไฟล์ xml เลย์เอาต์อื่น ๆ ไว้ด้วย (แต่ละไฟล์มี id android ที่แตกต่างกัน) <include layout="@layout/view_contact_name" android:id="+id/test1"/> <include layout="@layout/view_contact_name" android:id="+id/test2"/> แต่เมื่อฉันเรียกใช้ในโปรแกรมจำลองและเริ่ม Hierarchy Viewer แต่ละเลย์เอาต์ยังคงแสดง 'NO_ID' และในโค้ดของฉันฉันมี findViewById(R.id.test1)และfindViewById(R.id.test2)ทั้งสองส่งกลับค่า null ใครสามารถช่วยฉันแก้ปัญหาของฉัน?

16
วิธีตั้งค่าข้อความแถบเครื่องมือและสีลูกศรย้อนกลับ
พื้นหลังของแถบเครื่องมือเป็นสีเข้มฉันต้องการให้ข้อความและลูกศรย้อนกลับเป็นสีขาว ฉันพยายามติดตาม แต่มันไม่ได้ผล <style name="Theme.MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/blue</item> <item name="colorPrimaryDark">@color/blue_darker</item> <item name="colorAccent">@color/purple</item> <!-- item name="android:textColorPrimary">@color/white</item--> // I don't want to set this, changes everywhere. <item name="android:textColorSecondary">@color/white</item> <item name="android:toolbarStyle">@style/AppTheme.ToolbarStyle</item> <item name="toolbarStyle">@style/AppTheme.ToolbarStyle</item> <item name="drawerArrowStyle">@style/AppTheme.DrawerArrowStyle</item> </style> <style name="AppTheme.ToolbarStyle" parent="Base.Widget.AppCompat.Toolbar"> <!--<item name="actionOverflowButtonStyle">@style/AppTheme.OverflowButtonStyle</item>--> <item name="android:textColor">@color/white</item> // doesn't work <item name="titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item> <item name="android:titleTextAppearance">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item> <item name="subtitleTextAppearance">@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle</item> </style>

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>

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.