我的应用的minSdkVersion
是< 17
。我想以编程方式更改LinearLayout的位置和方向,而不是定义两个不同的LinearLayout。需要比minSdkVersion更高的API作为布局属性,但不能作为样式项的属性
旧的解决方案:
<LinearLayout
android:visibility="gone"
android:id="@+id/toolbar_vertical_outside"
...
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="vertical"
android:layout_alignTop="@id/aView"
android:layout_toEndOf="@id/aView"
android:layout_toRightOf="@id/aView">
...
<LinearLayout
android:visibility="gone"
android:id="@+id/toolbar_horizontal_inside"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:orientation="horizontal"
android:layout_alignEnd="@id/aView"
android:layout_alignRight="@id/aView"
android:layout_alignBottom="@id/aView">
...
新的解决方案:
<LinearLayout
android:id="@+id/toolbar"
...
android:layout_height="wrap_content"
android:layout_width="wrap_content"
style="@style/Toolbar_VerticalOutside">
...
......包括新的风格:
<style name="Toolbar_VerticalOutside">
<item name="android:orientation">vertical</item>
<item name="android:layout_alignTop">@id/aView</item>
<item name="android:layout_toEndOf">@id/aView</item>
<item name="android:layout_toRightOf">@id/aView</item>
</style>
<style name="Toolbar_HorizontalInside">
<item name="android:orientation">horizontal</item>
<item name="android:layout_alignEnd">@id/aView</item>
<item name="android:layout_alignRight">@id/aView</item>
<item name="android:layout_alignBottom">@id/aView</item>
</style>
问题:对于新的解决方案,Android Studio中抱怨name="android:layout_toEndOf"
和name="android:layout_alignEnd"
:“...要求API级别17(当前最小值为14)”。但是它们在布局文件中使用时没有抱怨相同的属性。为什么Android Studio对布局中的新属性比对样式更宽容?我也想在样式中使用新的属性。
谢谢您的回答!第一部分对我来说已经很清楚了。我不会是一个好公民 - 现在我在代码中以编程方式设置所有这些参数,因为我无法直接更改样式:https://stackoverflow.com/questions/11723881/android-set-view-style-programmatically – Andi