我的应用程序最初是针对Android 2.3开发的,但已经许多次更新,目前针对的是V21。当我的Nexus 5收到Marshmallow更新并发现我的应用程序的一个重要功能被破坏时,我感到很惊讶。我有一个顶部有一条线的屏幕,我想在最右边有两个按钮,一个EditText框(用于搜索文本)填满左边的屏幕剩余部分。这是我的第一个应用程序,我不清楚各种布局技术,但从Android 2.3到5.1这个代码继续工作:
<RelativeLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/upper_detail_section"
android:elevation="@dimen/upper_elevation"
>
<Button android:id="@+id/sort"
style="@style/large_cust_btn"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="@string/sort"
/>
<Button android:id="@+id/clear"
style="@style/large_cust_btn"
android:layout_toLeftOf="@+id/sort"
android:layout_alignParentTop="true"
android:layout_alignWithParentIfMissing="true"
android:text="@string/clear"
/>
<EditText android:id="@+id/lookup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/clear"
android:layout_alignBaseline="@+id/clear"
android:singleLine="true"
android:hint="@string/item_search_hint"
android:scrollHorizontally="true"
android:textSize="16sp"
android:inputType="textFilter"
/>
</RelativeLayout>
在Android 6.0中启动此屏幕,按钮就在那里,但EditText字段完全消失!知道我现在知道的事情,结果是使用LinearLayout和加权的简单修复:
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/upper_detail_section"
android:orientation="horizontal"
android:elevation="@dimen/upper_elevation"
>
<EditText android:id="@+id/lookup"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:singleLine="true"
android:hint="@string/item_search_hint"
android:scrollHorizontally="true"
android:textSize="16sp"
android:inputType="textFilter"
/>
<Button android:id="@+id/clear"
style="@style/large_cust_btn"
android:text="@string/clear"
android:onClick="clearClicked"
/>
<Button android:id="@+id/sort"
style="@style/large_cust_btn"
android:text="@string/sort"
android:onClick="sortClicked"
/>
</LinearLayout>
现在一切都很顺利,我正在使用新的APK更新商店,但我想我会警告人们,过去工作的一些布局技巧现在可能会被打破。
答案 0 :(得分:0)
如果我正确理解并重现您的问题,那么使用RelativeLayout
修复您的问题也非常简单。棉花糖仅以不同的宽度处理match_parent
。所以只需将其设置为其他类似于LinearLayout
和alignParentLeft到true
的其他内容:
<EditText android:id="@+id/lookup"
android:layout_alignParentLeft="true"
android:layout_width="0dp"
[...] />
这对我来说就像在Marshmallow之前一样产生了相同的布局。