Android在主题中全局设置编辑文字样式不起作用

时间:2015-09-03 13:36:10

标签: android android-layout android-fragments android-theme

我正面临着问题。我试图让我的应用程序中的编辑文本在主题的帮助下看起来一样 我已经在在线工具(9-patch图像)的帮助下生成了样式,并尝试在我的主题中设置它像这样

   <!-- Base application theme. -->
    <style name="DefaultAppTheme" parent="Theme.AppCompat">
        <!-- Main theme colors -->
        <!--   your app branding color for the app bar -->
        <item name="colorPrimary">@color/blue</item>
        <!--   darker variant for the status bar and contextual app bars -->
        <item name="colorPrimaryDark">@color/darkblue</item>
        <!--   theme UI controls like checkboxes and text fields -->
        <item name="colorAccent">@color/cornflowerblue</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:editTextStyle">@style/EditTextDefault</item>
    </style>

我的编辑文字风格

<style name="EditTextDefault" parent="android:Widget.EditText">
        <item name="android:background">@drawable/edit_text_holo_light</item>
        <item name="android:textColor">@color/light_blue</item>
        <item name="android:layout_marginLeft">@dimen/margin_edit_text_default</item>
        <item name="android:layout_marginRight">@dimen/margin_edit_text_default</item>
        <item name="android:layout_marginTop">@dimen/margin_edit_text_default</item>
    </style>

但是,如果使用编辑文本而不为每个编辑文本手动指定样式,则此操作无效。

这不起作用

<EditText
    android:id="@+id/edit_text_login"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/edit_text_password"
    android:hint="@string/hint_enter_login"
    android:inputType="textEmailAddress" />

这有效

<EditText
    android:id="@+id/edit_text_login"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/edit_text_password"
    style="@style/EditTextDefault"
    android:hint="@string/hint_enter_login"
    android:inputType="textEmailAddress" />

我知道layout_ * params不会影响它们是否在主题中使用,但其他属性应该有效。

请帮助解决这个问题。

5 个答案:

答案 0 :(得分:48)

而不是这个..

<item name="android:editTextStyle">@style/EditTextDefault</item>

使用此.. ..

<item name="editTextStyle">@style/EditTextDefault</item>

答案 1 :(得分:4)

你应该怎么做

使用此private int getIndex(Spinner spinner, String searchString) { if (searchString == null || spinner.getCount() == 0) { return -1; // Not found } else { for (int i = 0; i < spinner.getCount(); i++) { if (spinner.getItemAtPosition(i).toString().equals(searchString)) { return i; // Found! } } return -1; // Not found } }; 代替@android:style/Widget.EditText。我希望它会对您有所帮助。

请阅读本SO答案 Set a consistent style to all EditText

parent="android:Widget.EditText"

答案 2 :(得分:4)

如果您使用的是appcompat&gt; v22,则可以尝试使用

<form 
    onsubmit="document.getElementById('submit').disabled=true;document.getElementById('submit').value='Submitting, please wait...';"
    action="mailer.php" 
    method="post">
  <input 
      name="firstname" 
      type="text"
      placeholder="First Name" 
      class="form-content"/>
  </br>
  <input 
      name="surname" 
      type="text" 
      placeholder="Surname" 
      class="form-content"/>
  </br>

  [edit: removed irrelevant inputs]

  <div id="submitbutton">
    <input name="submit" type="submit" value="Submit" id="submit">
  </div>
</form>

并在layout.xml中将android:theme propertie设置为edittext

<style name="EditText.Colored" parent="Theme.AppCompat">
    <item name="colorControlNormal">@color/colorNormal</item>
    <item name="colorControlActivated">@color/colorActivated</item>
    <item name="colorControlHighlight">@color/colorControlHighlight</item>
</style>

答案 3 :(得分:2)

除了修复对Widget.EditText的引用:

<style name="EditTextDefault" parent="@android:style/Widget.EditText">

您需要创建一个“主题”并将其应用于清单中。像这样:

<application
    ...
    android:theme="@android:style/DefaultAppTheme" >
</application>

答案 4 :(得分:-1)

使用style.xml 使用光标精简版获得Good主题

DECLARE @columnString varchar(200)
SET @columnString = Count_99221 + COUNT_99222 + Count_99223

DECLARE @sql3 nvarchar(2000) = 
N'UPDATE #temp ' + 
'SET SumCount = (SELECT ' + @columnString +
    ' FROM #temp t2 WHERE t2.userID = #temp.userID)'

EXEC sp_executesql @sql3

<resources> <!-- Base application theme. --> <style name="AppTheme" parent="android:style/Theme.Holo.Light"> <!-- Customize your theme here. --> </style> <style name="NoActionBar" parent="android:style/Theme.Holo.Light.NoActionBar"> <!-- Customize your theme here. --> </style> <style name="FullScreen" parent="android:style/Theme.Holo.Light.NoActionBar.Fullscreen"> <!-- Customize your theme here. --> </style> </resources>

Add this in your Style.xml