我最近尝试采用基于样式的方式接近我的Android应用程序。但是,我陷入了这种困境。
在我的布局文件中,我最初有这个:
<LinearLayout
android:id="@+id/layout_event_buttons"
style="?android:attr/buttonBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal" >
<ImageButton
android:id="@+id/btn_create_event"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/btn_save"
android:src="@drawable/content_save"
android:text="@string/btn_save" />
</LinearLayout>
在我的styles.xml中,我尝试这样做没有运气:
<style name="Buttons" parent="?android:attr/buttonBarButtonStyle">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
</style>
我已经尝试过上述不同的变体,如:
?android:buttonBarButtonStyle
?attr:buttonBarButtonStyle
@android:attr/buttonBarButtonStyle
@android:buttonBarButtonStyle
我也尝试过:
<item name="style">?android:attr/buttonBarButtonStyle</item>
无济于事。
我的应用程序无法编译,因为找不到buttonBarButtonStyle资源。
这是我应用它的方式。如果我只继承Holo等常见主题,我的其他风格也可以正常工作
<ImageButton
style="@style/Buttons"
android:id="@+id/btn_create_event"
android:contentDescription="@string/btn_save"
android:src="@drawable/content_save"
android:text="@string/btn_save" />
答案 0 :(得分:4)
找到与此帖相似的答案: How does an android:attr style work?
原来这种风格是私密的,您可能需要将其完全复制才能将其拉下来。 :(
答案 1 :(得分:0)
我发现将android:background="?android:attr/selectableItemBackground"
应用于按钮属性会删除边框,这会使按钮的行为类似于android按钮栏(在扩展?android:attr/buttonBarButtonStyle
之后)。
This post解释得很好
答案 2 :(得分:0)
对于AppCompat,您可以继承父样式。例如,将其添加到每个按钮。
<style name="MyBorderlessButtonBarStyle" parent="@style/Widget.AppCompat.Button.Borderless">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">0dp</item>
<item name="android:textColor">@color/white</item>
<item name="android:layout_weight">1</item>
<!--more items-->
</style>