2016-09-07 104 views
0

当以编程方式创建一个EditText通过它的构造函数的EditText(上下文的背景下),它会创建一个与旧的Android设计:如何以编程方式创建材质设计EditText?

enter image description here

它不允许文本选择,(但我能移动光标)。如何使一个EditText与较新的设计,就像这样:

enter image description here

我已经找到了如何删除橙色边框(即setBackgroundColor),但我不能找到一种方法如何改变光标设计和如何使选择文本(即我的意思是看到左右文本选择句柄)。我需要以编程方式完成所有这些,因为我在Delphi中快速创建EditText(所以不需要xml)。


按照要求,这是与我的应用程序而来的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<!-- BEGIN_INCLUDE(manifest) --> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.myapp.app" 
     android:versionCode="1" 
     android:versionName="1.0.0" 
     android:installLocation="preferExternal"> 

    <!-- This is the platform API where NativeActivity was introduced. --> 
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.CALL_PHONE" /> 
    <uses-permission android:name="android.permission.CAMERA" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.READ_CALENDAR" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
    <uses-permission android:name="android.permission.WRITE_CALENDAR" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

    <uses-feature android:glEsVersion="0x00020000" android:required="True"/> 
    <application android:persistent="False" 
     android:restoreAnyVersion="False" 
     android:label="myapp" 
     android:debuggable="True" 
     android:largeHeap="False" 
     android:icon="@drawable/ic_launcher" 
     android:theme="@android:style/Theme.NoTitleBar" 
     android:hardwareAccelerated="true"> 



     <!-- Our activity is a subclass of the built-in NativeActivity framework class. 
      This will take care of integrating with our NDK code. --> 
     <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" 
       android:label="myapp" 
       android:configChanges="orientation|keyboard|keyboardHidden|screenSize" 
       android:launchMode="singleTask"> 
      <!-- Tell NativeActivity the name of our .so --> 
      <meta-data android:name="android.app.lib_name" 
       android:value="myapp" /> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" /> 

    </application> 
</manifest> 
<!-- END_INCLUDE(manifest) --> 
+0

大部分部件的时间样式的延长AppCompatActivity从在AndroidManifest应用标签主题继承。你可以发布AndroidManifest.xml文件吗? – jakubbialkowski

+0

所以你想要自定义光标像黑色光标,绿色光标如果我没有错 – Bhavnik

+0

@jakubbialkowski我只是发布我的AndroidManifest.xml的内容。但它不只是设计,现在我甚至不能在我的编辑文本中选择文本:( – loki

回答

0

什么你想要做的就是建立在你的布局文件夹一个EditText XML,你可以重复使用,并且可以在那里指定样式。

<?xml version="1.0" encoding="utf-8"?> 
<EditText xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
style="SUPPLY YOUR STYLE HERE FROM STYLES.XML" /> 

你也可以告诉它使用一个主题。然后,你吹这样的:

EditText myEditText = (EditText)getLayoutInflater().inflate(R.layout.SOME_LAYOUT, null); 

为了使您的文本选择,你可以试试这个:

editText.setTextIsSelectable(true);

+0

感谢VicVu,但它如何工作,如果现在我甚至不能选择任何文本(我只能看到中间文本句柄选择器,但不是左边或右边的文本句柄选择器)?我也想避免使用任何XML – loki

+0

请参阅我的编辑。 – VicVu

+0

感谢vicVU的支持,但不幸的是setTextIsSelectable没有帮助,我仍然无法看到右侧和左侧文本选择句柄:(我只能看到中间文本选择句柄.. – loki

-1

使用构造函数的3个参数的版本,并通过在你想要的风格。

+0

但我无法理解如何使用它EditText(上下文上下文,AttributeSet attrs,int defStyleAttr)...你有一些示例?在AttributeSet和defStyleAttr中放什么? – loki

+0

属性设置它是一组属性值,基本上所有的android:xml第三个参数是风格 –

0

Screen shot of text selection is here嘿洛基, 试试这个,可能会对你有所帮助..... 在Java文件输入以下代码片段

try { 
     Field f = TextView.class.getDeclaredField("mCursorDrawableRes"); 
     f.setAccessible(true); 
     f.set(editEmail, R.drawable.cursor_black); // set your programmatically generated edittext in this method 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 

在绘制文件夹中创建cursor_black.xml。

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<size android:width="2px" /> 
<solid android:color="@color/black" /> 
</shape> 

而且还尝试在你的活动类