将android EditText样式从矩形边框更改为下划线

在我的一个活动中,我的EditText视图用来看起来像这样

在这里输入图像说明

但现在他们看起来像这样

在这里输入图像说明

我需要帮助改变它:从矩形到下划线。

背景

因为我需要创build一个自定义的ActionBar,我不得不改变有问题的活动的主题, YesterdayActivity ,使用以下

样式:

 <style name="CustomWindowTitleBackground"> <item name="android:background">#323331</item> </style> <style name="CustomTheme" parent="android:Theme"> <item name="android:windowTitleSize">40dip</item> <item name="android:windowTitleBackgroundStyle">@style/CustomWindowTitleBackground</item> </style> 

performance:

  <activity android:name="com.example.YesterdayActivity" android:theme="@style/CustomTheme"> </activity> 

的onCreate:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.activity_yesterday); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.yesterday_title_bar); … } 

  • Android:如何在可绘制的XML中使用当前主题的颜色?
  • getColorStateList已被弃用
  • 在Android 4上自定义ActionBar选项卡
  • 更改Android Actionbar字幕颜色
  • ?android:attr /在向后兼容的应用程序中的用法
  • 全屏自定义主题
  • 从嵌套样式资源中检索值的语法?
  • 更改Android应用的样式和主题中的文本外观
  • 像这样改变你的自定义主题

     <style name="CustomTheme" parent="android:Theme.Holo.NoActionBar"> 

    因为你没有使用旧的Android主题,而不是HoLo那有点editTextView

    在较新版本的Android中,只要selectHolo主题,框架就会使用Window.FEATURE_ACTION_BARfunction。 当应用程序调用setFeatureInt(Window.FEATURE_CUSTOM_TITLE)并且FEATURE_ACTION_BAR已经被设置时,框架抛出exception。 它因为Holo默认使用ActionBar而崩溃。 修复很简单。 使用Holo时closuresActionBar

    从你的风格中删除这条线

     <item name="android:background">#323331</item> 

    因为它是反映行为的背景属性。

    有两种方法来实现这一点。 第一种方法通过改变你的应用程序的主题

    第一种方法:

    AndroidManifest.xml中

    请参阅android:主题

     <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> ... ... </application> 

    RES /值/ style.xml

    Theme.AppCompat.Light.DarkActionBar使下划线的EditText

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

    只需使用EditText相同的方式

     <EditText android:layout_width="match_parent" android:layout_height="48dp" android:hint="Email Address" android:inputType="textMultiLine" android:textSize="16dp" /> 

    第二种方法:

    创build一个可绘制底部描边的形状,并将其设置为EditText的背景

    创build一个名为res / drawable / stroked_edittext_bg.xml的可绘制文件,在下面的链接中说:

    如何创build一个底部描边的Android形状

     <EditText android:layout_width="match_parent" android:layout_height="48dp" android:background="@drawable/stroked_edittext_bg" android:hint="Email Address" android:inputType="textMultiLine" android:textSize="16dp" /> 

    它可以实现,如果你改变editText的主题。

     <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="textPersonName" android:text="Name" android:theme="@android:style/Theme.Holo" android:ems="10" android:id="@+id/editText" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" />