Android 来自XML和代码差异的文本视图
当我从XML创建TextView时,里面的所有文本都是黑色的,但当我从代码创建TextView时,它是灰色的。为什么? 代码和XML中元素的位置是相同的:主布局是RelativeLayout(始终来自XML) 下面的所有元素在一种情况下是从XML创建的,在另一种情况下是从代码创建的:ScrollView->TableLayout->TableRow->TextView 在这两种情况下,在所有层次结构中,我都没有设置颜色/样式/Apparance参数 代码: XML:Android 来自XML和代码差异的文本视图,android,android-layout,textview,Android,Android Layout,Textview,当我从XML创建TextView时,里面的所有文本都是黑色的,但当我从代码创建TextView时,它是灰色的。为什么? 代码和XML中元素的位置是相同的:主布局是RelativeLayout(始终来自XML) 下面的所有元素在一种情况下是从XML创建的,在另一种情况下是从代码创建的:ScrollView->TableLayout->TableRow->TextView 在这两种情况下,在所有层次结构中,我都没有设置颜色/样式/Apparance参数 代码: XML: 一个简单的解决方法如下--
一个简单的解决方法如下-- 尝试使用已知ID(根据上面的xml)在onResume()方法或add row函数(上面的代码)中检索TextView,并手动将颜色设置为黑色/灰色。函数setBackgroundColor将有所帮助 用法--
(如果您在resources/color.xml中使用十六进制值定义了颜色“darkgrey”)文本视图在xml和代码中的位置?我知道我可以更改颜色,但我认为这不是解决方案。我想知道为什么它会像我描述的那样。
RelativeLayout layout = (RelativeLayout) findViewById(R.id.o_layout);
ScrollView sv = new ScrollView(getApplicationContext());
TableLayout tl = new TableLayout(getApplicationContext());
float density = getResources().getDisplayMetrics().density;
tl.setPadding((int)(10 * density), (int)(4 * density), (int)(4 * density), 0);
for(String s: lista){
add_row(tl, s);
}
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.BELOW, R.id.osobowe_search_field);
params.addRule(RelativeLayout.CENTER_HORIZONTAL);
sv.addView(tl);
layout.addView(sv, params);
private void add_row(TableLayout tl, String left_text){
float density = getResources().getDisplayMetrics().density;
TableRow tr = new TableRow(getApplicationContext());
tr.setMinimumHeight((int)(30 * density));
TableLayout.LayoutParams params = new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.bottomMargin = (int)(4 * density);
TextView left = new TextView(getApplicationContext());
left.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, 25);
TableRow.LayoutParams left_params = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
left_params.gravity = Gravity.CENTER_VERTICAL;
left.setText(left_text);
TextView right = new TextView(getApplicationContext());
right.setTextSize(android.util.TypedValue.COMPLEX_UNIT_DIP, 18);
right.setGravity(Gravity.CENTER_VERTICAL);
TableRow.LayoutParams right_params = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
right_params.leftMargin = (int)(10 * density);
right_params.gravity = Gravity.CENTER_VERTICAL;
//right_params.setMargins((int)(10 * density), 0, 0, 0);
right_params.weight = 1;
right.setText(get_desc("l", left_text));
View line = new View(getApplicationContext());
line.setBackgroundResource(R.drawable.line_on_bottom);
TableLayout.LayoutParams line_params = new TableLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, (int)density);
line_params.setMargins((int)(20 * density), 0, (int)(20 * density), 0);
tr.addView(left, left_params);
tr.addView(right, right_params);
tl.addView(tr, params);
tl.addView(line, line_params);
}
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/o_details"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:paddingRight="4dip"
android:paddingTop="4dip" >
<TableRow
android:id="@+id/o_row01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="30dp"
android:layout_marginBottom="4dip" >
<TextView
android:id="@+id/o_num01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/_"
android:textSize="25dip"
/>
mytextview.setBackgroundColor(getResources().getColor(R.color.darkgrey));