0

スタックオーバーフローに関する多くの問題を解決しました。私は特定の問題に直面したので、初めてあなたに直接質問する時が来ました.

私はActionBarSherlockを使用しています。アプリがどのデバイスでも同じように見えるようにしたかったのです。ダイアログが必要なので、ABS のダイアログ テーマを使用することにしました。そのため、カスタム ダイアログのアクティビティを作成し、以前の Android バージョンでも Holo のように見えるようにスタイルを設定しました。

Android 2.3.3 エミュレーターでは次のように表示されます。

https://dl.dropbox.com/u/49293039/problem2.jpg (すみません、評判が悪くて画像として載せれません…)

私はこれを楽しんでいます。しかし、ICS および JB デバイス/エミュレーターでテストしたいと思ったとき、私は見ました...

https://dl.dropbox.com/u/49293039/problem1.jpg

ご覧のとおり、私のボタンは表示されていません。私のソースコードを簡単に見てみましょう。

ボタンバーの実装の一部である @layout/my_dialog.xml:

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:layout_margin="0dp" 
    android:orientation="vertical"
    android:padding="0dp">

    <View
    style="@style/HorizontalDivider"
    />

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="0dp" 
    android:orientation="horizontal"
    android:padding="0dp">

        <Button
        android:id="@+id/cancelButton"
        android:text="@string/cancel_button"
        style="@style/HoloBarButton"
         />

       <View
       style="@style/VerticalDivider"
       />

       <Button
       android:id="@+id/proceedButton"
       android:text="@string/add_button"
       style="@style/HoloBarButton"/>

    </LinearLayout>
</LinearLayout>

@values/styles.xml

<style name="HorizontalDivider">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">1dp</item>
    <item name="android:background">?android:attr/listDivider</item>
    <item name="android:layout_margin">0dp</item>
</style>

<style name="VerticalDivider">
    <item name="android:layout_width">1dp</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">?android:attr/listDivider</item>
    <item name="android:layout_margin">0dp</item>
</style>

<style name="HoloBarButton">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:layout_margin">0dp</item>
    <item name="android:textColor">#ffffff</item>
    <item name="android:layout_weight">50</item>
</style>

この問題を解決する方法はありますか? ダイアログの 2 つのバージョン (4.0 以降のネイティブと古い Android バージョンのカスタムの両方) を実装すると、はるかに多くの労力が必要になります。それを修正することは可能ですか、それとも単に私のせいですか?

targetSdkVersion を 15 から 8 および 10 (最小値は 8) に変更して解決しようとしましたが、役に立ちませんでした。不明な点があれば、お尋ねください。がんばってくれてありがとう。

4

2 に答える 2

0

問題はボタンスタイルにあります。HoloBarButtonこれに変更してください

<style name="HoloBarButton">
  <item name="android:layout_width">0dp</item>
  <item name="android:layout_height">match_parent</item>
  <item name="android:background">@android:color/transparent</item>
  <item name="android:layout_margin">0dp</item>
  <item name="android:textColor">#ffffff</item>
  <item name="android:layout_weight">1</item>
</style>
于 2013-02-24T15:22:59.663 に答える
0

私はそれを解決しました。問題はコードの一部にありましたが、そこには投稿しませんでした。@layout/my_dialog.xml のコードでした。LinearLayout の 1 つは、layout:height に match_parent があったため、ボタンを使用して LinearLayout を配置する余地がありませんでした。驚くべきことに、古い API には問題がありません。したがって、レイアウト パラメーターを確認し、1 つのプラットフォームで正しく表示されることを信頼せず、すべてのプラットフォームでアプリを実行してみてください。何か問題がある場合は、コード内のエラーを探してください。

于 2013-02-25T07:24:07.080 に答える