Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何继承Android样式属性?_Java_Android_Styles - Fatal编程技术网

Java 如何继承Android样式属性?

Java 如何继承Android样式属性?,java,android,styles,Java,Android,Styles,我最近尝试在我的android应用程序中采用一种基于风格的方法。然而,我陷入了这个困境 在我的布局文件中,我最初有以下内容: <LinearLayout android:id="@+id/layout_event_buttons" style="?android:attr/buttonBarStyle" android:layout_width="wrap_content" android:layout_height

我最近尝试在我的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>
无济于事

我的应用程序无法编译,因为它找不到buttonBarButtonStyle资源

这就是我应用它的方式。我的其他风格很好的工作,如果我只是继承像全息等共同的主题

<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" />

发现答案与本文类似:


事实证明,这种风格是私密的,您可能需要完全复制它才能实现:(

我发现将
android:background=“?android:attr/selectableitemcondground”
应用于按钮属性会删除边框,这使得按钮的行为类似于android按钮栏(在扩展
?android:attr/buttonBarButtonStyle
之后)


解释得很好

对于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>

包装内容
0dp
@颜色/白色
1.

顺便说一句,我的清单中有这个属性,所以我认为我运行它的api级别不受支持。您不能有多个相同的命名自定义属性。
<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" />
<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>