我正在尝试创建一个Android应用程序,在该应用程序中单击一个按钮,然后在现有的文本视图旁边创建一个新的文本视图,其中一些预设文本具有相同的样式/大小。问题是,当创建新的文本视图时,文本看起来更小并且具有不同的样式(新文本是灰色,原始是黑色)。此外,新的文本视图似乎与原文不一致。我尝试了here建议的答案,并且略有改进,现在新文本已正确对齐但尺寸仍然小于原始文本。我的最终目标是拥有它,以便您可以继续单击按钮以将彼此相邻的更多文本视图添加到一起。有谁知道问题是什么?
相关代码:
public class MainActivity extends Activity {
TextView textView;
TextView textView2;
LinearLayout container;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
container = (LinearLayout) findViewById(R.id.linearLayout);
textView = (TextView) findViewById(R.id.textView);
}
View.OnClickListener handler2 = new View.OnClickListener() {
@Override
public void onClick(View v) {
textView2 = new TextView(getApplicationContext());
textView2.setLayoutParams(textView.getLayoutParams());
container.addView(textView2);
}
};
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="49dp" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/linearLayout"
android:layout_alignParentTop="false"
android:layout_above="@+id/button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="0"
android:id="@+id/textView"
android:textSize="50dp"
android:layout_gravity="center_vertical" />
</LinearLayout>
</RelativeLayout>
非常感谢。
答案 0 :(得分:0)
试试这个:
public void onClick(View v) {
textView2 = new TextView(getApplicationContext());
textView2.setLayoutParams(textView.getLayoutParams());
textView2.setTextSize(textView.getTextSize());
textView2.setTextAppearance(this, android.R.style.TextAppearance_Large);
container.addView(textView2);
}
答案 1 :(得分:0)
在OnClick方法中创建TextView时,您不应用在xml布局中执行的任何属性。新的TextView将具有textAppearance和textSize的默认值,这就是它看起来不同的原因。
答案 2 :(得分:0)
一个好的做法是在xml中定义视图样式,正是出于这个原因 - 它允许您在不同的地方重用它们。所以我在res/values/style.xml
中为TextView定义了样式:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="textViewStyle" parent="@android:style/TextAppearance.Large">
<item name="android:textSize">50dp</item>
</style>
</resources>
然后您可以将xml中的TextView更改为
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:style="@style/textViewStyle"
android:text="0"
android:id="@+id/textView"
android:layout_gravity="center_vertical" />
当您以编程方式添加TextView时,可以使用
textView.setTextAppearance(context, R.style.textViewStyle);
这样你就不需要抓住旧的TextView了。你将以正确的Android方式做到这一点!