正如问题所述,我遇到了一些奇怪的行为,我的左侧抽屉在运行Android 4.4的HTC One上没有任何左侧填充。
我看到的布局是
<LinearLayout>
<include layout="@layout/search_bar" />
<!-- Some Fragment layout information -->
</LinearLayout>
在search_bar里面我有一个看起来像的布局。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="8dp">
<EditText
android:layout_width="match_parent"
android:layout_height="56dp"
style="@style/SearchBox.SingleSearchBar" />
</FrameLayout>
SearchBox.SingleSearchBar样式看起来像(在对样式层次结构进行一些按摩之后)。
<style name ="SearchBox.SingleSearchBar" parent="@android:style/Widget.TextView">
<item name="android:focusable">false</item>
<item name="android:gravity">center_vertical</item>
<item name="android:singleLine">true</item>
<item name="android:lines">1</item>
<item name="android:imeOptions">actionSearch|flagNoExtractUi</item>
<item name="android:layout_centerHorizontal">true</item>
<item name="android:selectAllOnFocus">true</item>
<item name="android:drawableLeft">@drawable/gray_magnifying_glass</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:paddingLeft">@dimen/search_drawable_padding</item>
<item name="android:paddingRight">@dimen/search_drawable_padding</item>
<item name="android:paddingTop">@dimen/search_drawable_padding</item>
<item name="android:paddingBottom">@dimen/search_drawable_padding</item>
<item name="android:drawablePadding">@dimen/search_drawable_padding</item>
<item name="android:maxLines">1</item>
<item name="android:background">@drawable/search_bar_selector</item>
<item name="android:textAppearance">@style/TextAppearanceSearchBox</item>
<item name="android:textCursorDrawable">@drawable/search_box_cursor</item>
</style>
在我见过的除HTC One之外的每台设备上,运行正常:左侧drawable在左侧的search_drawable_padding中填充,并且drawable和text之间有适当的填充。但是,出于某种原因,在HTC One上,文本框的左边缘与可绘制文件之间没有填充。
我记录了getPaddingLeft()和getPaddingTop的值,发现在HTC One上它们是0px,而在三星GS4上它们是48像素,这是有意义的,因为search_drawable_padding是16dips。
这有什么办法吗?我错过了一些非常愚蠢的东西,迫使我在代码中调用setPadding以使其工作吗?
答案 0 :(得分:0)
请检查您的背景drawable search_bar_selector,
<item name="android:background">@drawable/search_bar_selector</item>
设置背景可以将填充值重置为0(请参阅here)。
解决此问题的一个解决方案是在文件search_bar_selector中再次设置填充值,(良好的解决方案,因为您不需要以编程方式设置填充值)。
<padding android:bottom="@dimen/search_drawable_padding" android:left="@dimen/search_drawable_padding" android:right="@dimen/search_drawable_padding" android:top="@dimen/search_drawable_padding" />