2013-01-12 38 views
0

我正在创建一个Android应用程序,它在可用时使用Holo主题,并在不可用时回退到黑色主题。我正在通过使用valuesvalues-v11values-14文件夹来完成此操作。Holo中的Android按钮栏

我有,我想用?android:attr/buttonBarStyle?android:attr/buttonBarButtonStyle风格的活动,但我不确定如何回落到一个不同的风格时,他们无法使用(如@android:style/ButtonBar)。这是我的布局供参考。

<LinearLayout 
    android:id="@+id/buttonArea" 
    style="?android:attr/buttonBarStyle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:gravity="bottom|right" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@+id/button1" 
     style="?android:attr/buttonBarButtonStyle" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Button One" /> 

    <Button 
     android:id="@+id/button2" 
     style="?android:attr/buttonBarButtonStyle" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="Button Two" /> 
</LinearLayout> 

回答

1

我通过使用两个单独的布局文件,一个坐落在layout文件夹和一个位于layout-v11解决了这个。它们几乎相同,只是它们包含style属性的不同值。

第一个看起来像这样(在layout):

<LinearLayout 
    android:id="@+id/buttonArea" 
    style="@style/buttonBar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:gravity="bottom|right" 
    android:orientation="horizontal" 
    android:padding="5dp" > 

    <Button 
     android:id="@+id/button1" 
     style="@style/buttonBarButton" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 

    <Button 
     android:id="@+id/button2" 
     style="@style/buttonBarButton" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 
</LinearLayout> 

第二个看起来像这样(在layout-v11):

<LinearLayout 
    android:id="@+id/buttonArea" 
    style="?android:attr/buttonBarStyle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:gravity="bottom|right" 
    android:orientation="horizontal" 
    android:padding="5dp" > 

    <Button 
     android:id="@+id/button1" 
     style="?android:attr/buttonBarButtonStyle" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 

    <Button 
     android:id="@+id/button2" 
     style="?android:attr/buttonBarButtonStyle" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 
</LinearLayout> 

我并不完全满意,这是因为方法重复信息的数量。我想找到一个方法来使用?android:attr/buttonBarButtonStyle作为父母的风格,但我找不到一种方法来实现这一点。

10

嗯,我有点晚了,但是这是我如何解决它:

<LinearLayout 
    android:id="@+id/footer" 
    style="@style/ButtonBar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_below="@+id/accountSpinner" 
    android:orientation="horizontal" > 

    <Button 
     android:id="@android:id/button1" 
     style="@style/ButtonBarButton" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="50dp" 
     android:text="@string/login" /> 
    <Button 
     android:id="@android:id/button2" 
     style="@style/ButtonBarButton" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="50dp" 
     android:enabled="false" 
     android:text="@string/login" /> 
</LinearLayout> 

与此风格:

<style name="ButtonBarButton"> 
</style> 

<style name="ButtonBar" parent="@android:style/ButtonBar"> 
</style> 

和V11:

<style name="ButtonBarButton" parent="@android:style/Widget.Holo.Button.Borderless"> 
    <item name="android:textColor">@android:color/primary_text_light</item> 
</style> 

<style name="ButtonBar" parent="@android:style/Holo.Light.ButtonBar.AlertDialog"> 
</style> 
+0

你怎么知道这些attrs映射到Widget.Holo.Button.Borderless和Holo.Light.ButtonBar.AlertDialog? –

+0

对不起,我不记得了。我认为这是“尝试和错误”,代码完成和stackoverflow的混合 – user1772710