1

Androidスタイルを機能させるのに問題があります。テストとして、EditTextコントロールを作成し、次のような「CodeFont」というスタイルに関連付けました。

 EditText et = new EditText(this, null, Resource.Style.CodeFont);

次に、標準スタイルを継承し、テキストの色を次のように赤に変更するスタイルを定義しました。

  <resources>
      <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#FF0000</item>
        <item name="android:typeface">monospace</item>
      </style>
    </resources>

私は何が間違っているのですか?EditTextが表示されると、フォーカスのオレンジ色の境界線が表示されなくなります。これは、スタイリングが機能していると私に思わせます。ただし、テキストの色は黒のままです。

4

3 に答える 3

0

Ok。私は最終的に解決策を見つけました。いくつかのリソースからそれをつなぎ合わせる必要がありました。

  1. Android 4.0 (Ice Cream Sandwich) では、アクティビティの属性セクションでテーマ名を指定する際に既知の問題があります: Cannot Resolve @style/Theme.Sherlock。属性を使用してテーマを設定すると、コンパイラは「指定された名前に一致するリソースが見つかりませんでした ('theme' で値 '@style/blah-blah' を指定)」を返します。 ) アクティビティの OnCreate( ) 内の API。
  2. スタイルを作成するとき、そのスタイルはステップ 1 で参照したテーマの一部である必要があります。テーマ内でスタイルをグループ化してください (必要に応じて、標準の Android テーマから継承できます)。スタイル名ごとに、ステップ 1 のリンクで説明されているように、属性参照を作成する必要があります。次のリンクは、スタイル名リソース属性を定義する「正しい」方法です: How do I create my own resource names?
  3. ステップ 2 で定義した属性を使用して、テーマからスタイルを参照する必要があります。例: EditText et1 = new EditText(this, null, Resource.Attribute.CodeFontRef);
于 2012-09-11T20:46:19.430 に答える
0

EditText を動的に生成する必要がない限り、XML を使用してから XML 経由でスタイルを定義する必要があります。これにより、多くの利点を持つコードから GUI が分離されます。

このように、次のようにスタイルを簡単に指定できます。

style="@style/CodeFont"

詳細については、Android 開発者の Web サイトを参照してください。

于 2012-09-10T15:19:46.077 に答える
0

"@android:style/TextAppearance.Medium"親スタイルとして使用しているため、境界線は表示されません。TextAppearance.Medium は、ウィジェット スタイルではなく、textAppearance 属性スタイルです。オレンジ色の境界線とすべてを表示したいが、中程度のテキスト サイズにする場合は、次のようにします。

<style name="CodeFont" parent="@android:style/Widget.EditText">
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">#FF0000</item>
    <item name="android:textAppearance">@android:style/TextAppearance.Medium</item>
    <item name="android:typeface">monospace</item>
</style>
于 2012-09-10T15:58:16.940 に答える