- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我附上了运行 19 和 21 模拟器的屏幕截图:
左边是 Android 19,右边是 21。如您所见,基于 API 19 的模拟器不遵守 padding 属性。同样的事情发生在 4.4.x 设备上,所以这不仅仅是一个模拟器问题。
这是我用于此 Activity 的 .xml 代码:
<RelativeLayout 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"
tools:context="com.birsan.cardbox.FolderScreen">
<ImageView
android:id="@+id/magnifying_glass_icon"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignBottom="@+id/search_button"
android:layout_alignLeft="@+id/search_folder"
android:layout_alignStart="@+id/search_folder"
android:layout_marginBottom="2dp"
android:layout_marginLeft="9dp"
android:layout_marginStart="9dp"
android:contentDescription="magnifying glass"
android:src="@drawable/ic_menu_search" />
<include
android:id="@+id/toolbar"
layout="@layout/app_bar" />
<EditText
android:id="@+id/search_folder"
android:layout_width="250dp"
android:layout_height="30dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="10dp"
android:background="@drawable/search_custom_widget"
android:focusable="true"
android:hint="Search in folders"
android:iconifiedByDefault="false"
android:paddingLeft="40dp"
android:paddingRight="55dp"
android:singleLine="true"
android:textSize="14sp"
android:textStyle="bold" />
<Button
android:id="@+id/search_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="26dp"
android:layout_alignBottom="@+id/search_folder"
android:layout_alignEnd="@+id/search_folder"
android:layout_alignRight="@+id/search_folder"
android:layout_marginBottom="2dp"
android:layout_marginRight="2dp"
android:background="@color/my_blue"
android:text="Go"
android:textColor="#fff"
android:textSize="10sp" />
<com.name.cardbox.SlidingTabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/app_bar"
android:layout_marginTop="40dp"
android:background="@color/my_blue" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/sliding_tabs"
android:background="#fff">
</android.support.v4.view.ViewPager>
为什么会出现差异?我错过了什么,我该如何解决?谢谢。
最佳答案
这似乎是 API 21 中的错误 - Issue 77982 .
应该在未来的版本中修复。对于临时修复,请尝试动态设置填充。
更新:1) 实际上,21 工作正常。是不是19.
错误本身是——“填充在 api 21 中工作正常,在较低的 android 设备中不起作用”。此错误存在于 sdk 21 中,并且由于您正在使用 sdk 21 编译您的应用程序,因此填充在较低的 api 中不起作用。
2) searchView.setPadding(40, 0, 55, 0);
这会以像素为单位设置填充,如果您在高密度设备上运行它,您将不会注意到其中的差异。尝试在 dp 中设置填充
int paddingLeft = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics());
int paddingRight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 55, getResources().getDisplayMetrics());
int paddingTop = editText.getPaddingTop();
int paddingBottom = editText.getPaddingBottom();
editText.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
关于android - EditText 填充属性对 API 19 和 21 的作用不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28700938/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!