使用样式以编程方式创建视图

Posted

技术标签:

【中文标题】使用样式以编程方式创建视图【英文标题】:Create view programmatically with style 【发布时间】:2014-05-13 15:58:21 【问题描述】:

我的申请有问题。基本上它的作用是,当我单击一个按钮时,它会在滚动视图上创建 3 个字段(2 个 editText 和 1 个微调器)。事情很好,我唯一遇到的问题与样式有关,活动 bgColor 是白色的(与应用程序的其余部分一样)但是,当我以编程方式创建元素时,这些元素没有我的其余部分的外观应用程序。 editTexts 是白色的,带有白色字母(由于我的 bgColor 也是白色的,因此无法阅读),并且与微调器相同。我能做些什么?这是一段代码,您可以在这里看到我在做什么。

public class AddIngredients extends Activity 
public int Count = 0;
public String[] spinnerArray = "Gr", "kg", "Cups", "ml", "L", "oz";
@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addingredients);
    final TableLayout lm = (TableLayout) findViewById(R.id.TableMain);

    TableLayout.LayoutParams params = new TableLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    Button addMore = (Button)findViewById(R.id.addmore);
    addMore.setOnClickListener(new OnClickListener() 

        @Override
        public void onClick(View v) 

            TableRow ll = new TableRow(getApplicationContext());
            //ll.setOrientation(LinearLayout.HORIZONTAL);


            EditText product = new EditText(getApplicationContext());
            product.setHint(" Ingredient "+Count +"    ");

            // Create Button
            EditText amount = new EditText(getApplicationContext());
                // Give button an ID
                amount.setId(Count);
                amount.setHint("Quantity");

            final Button btn2 = new Button(getApplicationContext());

                btn2.setId(Count);
                btn2.setText("Remove " + Count);

            Spinner spinner = new Spinner(getApplicationContext());
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, spinnerArray);
            spinner.setAdapter(spinnerArrayAdapter);

            ll.addView(product);
            ll.addView(amount);
            ll.addView(spinner);
            lm.addView(ll);
            Count = Count + 1;

我知道我的 XML 运行良好,因为如果我在我的 xml 上创建 3 个视图,它们看起来很棒。 PD:提前感谢您的帮助!问候。

【问题讨论】:

【参考方案1】:

你可以使用

amount.setTextColor(Color.BLACK);

将文本颜色设置为黑色或任何其他颜色 同样可以用于微调器

【讨论】:

我确实尝试过,问题是,是的,文本的颜色发生了变化,但文本下方的行(editText 行)没有变化,遗憾的是,没有办法做到这一点微调器,至少我没有找到它。 :c 您也可以添加带有EditText的LayoutParams,您可以根据自己的意愿更改用户界面 我该怎么做卡兰? :$ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);并使用 ll.addView(amount, params); 添加 你 av=n 参考这个链接***.com/questions/14199240/… 如果你想删除你的编辑文本的边框...如果这不起作用然后告诉你想要什么以及你的结果是什么.. 【参考方案2】:

以下是我如何设置编辑文本行和其他与主题相关的 android 视图的颜色。

http://android-holo-colors.com/

我只是选择了我想要的颜色和视图,然后将它们解压缩到我的 res 文件夹中,然后根据 android 教程设置主题。

我建议先备份你的 res 文件夹,以防你不喜欢结果。

阁楼

【讨论】:

好的,但我的整个应用程序主题运行良好,甚至滚动视图也运行良好(如果我手动在 xml 中添加元素),问题在于我以编程方式创建元素:/。。跨度> 据我所知,编辑文本行颜色没有可以通过编程方式更改的属性,我记得不久前搜索过它。您可以使用上述方法保留现有主题,只需添加从该站点创建的元素以覆盖编辑文本行。【参考方案3】:

我的代码有错误。创建字段时,我正在使用 (getApplicationContext());。我使用MyApplicationName.this 修复了它。

【讨论】:

以上是关于使用样式以编程方式创建视图的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式创建形状视图并在集合视图单元格上使用

iOS:以编程方式在以编程方式创建的滚动视图中创建标签

如何以编程方式创建带有约束的视图

以编程方式创建视图和添加子视图比使用情节提要更好/更快[重复]

基于在 Storyboard 中使用自动布局创建的另一个视图,以编程方式使用框架创建视图

以编程方式创建输入附件视图