【问题标题】:Android appcompat button style not workingAndroid appcompat 按钮样式不起作用
【发布时间】:2017-10-28 05:05:15
【问题描述】:

这是我的应用程序的基本主题:

  <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorSecondaryLight</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:buttonStyle">@style/NormalButtonStyle</item>
    <item name="buttonStyle">@style/NormalButtonStyle</item>
  </style>

这是 NormalButtonStyle:

  <style name="NormalButtonStyle" parent="@style/Widget.AppCompat.Button">
    <item name="android:textColor">@android:color/white</item>
    <item name="fontPath">fonts/TitilliumWeb-SemiBold</item>
    <item name="android:backgroundTint">@color/colorAccent</item>
    <item name="android:colorButtonNormal">@color/progressBar</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:colorControlHighlight">@color/colorSecondaryLight</item>
    <item name="colorControlHighlight">@color/colorSecondaryLight</item>
  </style>

这里的 fontPath 是Calligraphy 库的属性。但这对我不起作用。

这是 AppCompatButton 代码之一:

<android.support.v7.widget.AppCompatButton
    android:id="@+id/btnLoginSignIn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="@string/txt_sign_in"
    android:layout_below="@id/tilLoginPassword"
    android:layout_marginTop="@dimen/dimen_top_margin_normal"
    android:layout_alignStart="@id/tilLoginPassword"
    android:layout_alignEnd="@id/tilLoginPassword"/>

我做错了什么?

Android Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.astound.farmroster">

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

  <application
      android:name=".app.MyApplication"
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
    <activity
        android:name=".activity.Splash"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBarFullScreen"
        android:windowSoftInputMode="adjustResize|stateHidden">
    </activity>
    <activity
        android:name=".activity.Login"
        android:label="@string/txt_sign_in"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustResize|stateHidden">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>
    <activity
        android:name=".activity.Dashboard"
        android:label="@string/title_activity_dashboard"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        android:windowSoftInputMode="adjustResize|stateHidden">
    </activity>
    <activity
        android:name=".activity.JobList"
        android:label="@string/title_activity_job_list"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        android:windowSoftInputMode="adjustResize|stateHidden">
    </activity>
    <activity
        android:name=".activity.JobDetail"
        android:label="@string/title_activity_job_detail"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"
        android:windowSoftInputMode="adjustResize|stateHidden">
    </activity>
  </application>

</manifest>

【问题讨论】:

  • 你能把 AndroidManifest.xml 添加到你的帖子吗?
  • 嘿@fisher3421 我做到了
  • 尝试使用文件扩展名...&lt;item name="fontPath"&gt;fonts/TitilliumWeb-SemiBold.ttf&lt;/item&gt;
  • 谢谢@rafsanahmad007 成功了。我只是想知道一件事:@color/colorSecondaryLight@color/colorSecondaryLight哪一个是对的?跨度>

标签: android android-layout material-design android-styles android-appcompat


【解决方案1】:

使用带扩展名的完整文件路径:

代替:

<item name="fontPath">fonts/TitilliumWeb-SemiBold</item>

使用:

<item name="fontPath">fonts/TitilliumWeb-SemiBold.ttf</item>

关于你的第二个问题:两者都是正确的。

<item name="android:colorControlHighlight">@color/colorSecondaryLi‌​ght</item>
<item name="colorControlHighlight">@color/colorSecondaryLight</ite‌​m>

使用示例

theme.xml:

<item name="colorControlHighlight">@color/button_color</item>

v21/theme.xml

<item name="android:colorControlHighlight">@color/button_color</item>

如需更多帮助,请参阅Answer

【讨论】:

    【解决方案2】:

    将完整的文件名添加到您的样式中的“fontPath”属性中,例如:

    &lt;item name="fontPath"&gt;fonts/TitilliumWeb-SemiBold.ttf&lt;/item&gt;

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 2015-09-01
      • 1970-01-01
      • 2023-03-26
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2015-10-30
      相关资源
      最近更新 更多