将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); … } 

Solutions Collecting From Web of "将android EditText样式从矩形边框更改为下划线"

像这样改变你的自定义主题

 <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" />