使用样式以编程方式创建视图
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
修复了它。
【讨论】:
以上是关于使用样式以编程方式创建视图的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式创建视图和添加子视图比使用情节提要更好/更快[重复]