Appcelerator:Android TextField底部和顶部填充太大,无法更改

时间:2016-07-20 19:13:15

标签: appcelerator textfield

我正在尝试使用特定大小的文本字段构建UI。默认的顶部和底部填充会导致问题。

首次尝试使用相对值设置高度时,会显示文本字段,以便内部文本被切断或甚至不可见:Relative Sizing

所以使用非相对高度:

var itemValue = Ti.UI.createTextField({
    backgroundColor:"#414042",
    top:"65%",
    width:"75%",
    height: Ti.UI.SIZE,
    color:"#FFF",
    paddingLeft:"5dp",
    borderColor:"#F4E09C",
    borderWidth:"1dp",
    keyboardType:Ti.UI.KEYBOARD_NUMBERS_PUNCTUATION,
    font:{
        fontSize:varFontSize+"dp",
    }
});

顶部和底部填充导致文本字段对于所需的UI而言太大。

最后,我找到了一个允许我更改顶部和底部填充的解决方案,它需要更改自定义主题:

<?xml version="1.0" encoding="utf-8"?>
 <resources>
  <style name="Theme.NoActionBar" parent="@style/Theme.Titanium">
    <!-- Depending on the parent theme, this may be called android:windowActionBar instead of windowActionBar -->
    <item name="windowActionBar">false</item>
    <item name="android:paddingBottom">2dp</item>
    <item name="android:paddingTop">2dp</item>
  </style>
 </resources>

然而,这种方法导致另一个问题,因为我在另一个问题中询问(显然我不能拥有超过2个链接,因为我没有足够的声誉。但你可以在我看到它问题的历史)

但是UI看起来像我想要的那样:Good UI但请注意UI顶部的额外橙色,即显示的闪屏。

如何以不会导致整个窗口填充的方式更改顶部和底部填充?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

在试图找出可能的解决方案之后,我只有两种方法可以做到:

  1. 要获得您想要的UI类型,请尝试此操作。
  2. <View width="75%" height="YOUR_REQUIRED_HEIGHT" backgroundColor="#414042" borderWidth="1" borderColor="#F4E09C"> <TextField left="5" right="5" bottom="-5" color="white" backgroundColor="transparent" hintText="Type here" /> </View>

    请注意查看中的 YOUR_REQUIRED_HEIGHT ,这是文字字段所需的高度,并添加 bottom = -5 解决您的问题因为它会将文本字段向下移动 5dp ,这足以隐藏底部文本字段中的额外填充,但请确保已设置 TextField&#39; s backgroundColor =&#34;透明&#34; ,这会使 TextField 下划线隐藏。

    1. 要么不使用现在不是很传统的盒式文本字段 - 显然你不会想要它:)
    2. 您可以像这样使用.js文件:

      var win = Ti.UI.createWindow({
          backgroundColor : "#444",
      });
      
      var view = Ti.UI.createView({
          width : '75%',
          height : YOUR_REQUIRED_HEIGHT,
          backgroundColor : "#414042",
          borderWidth : 1,
          borderColor : "#F4E09C"
      });
      
      var field = Ti.UI.createTextField({
          left : 5,
          right : 5,
          bottom : -5,
          color : "white",
          backgroundColor : "transparent",
          hintText : "Type here"
      });
      
      view.add(field)
      
      win.add(view);
      
      win.open();