这个XML布局和相应的Java布局有什么区别?

时间:2012-03-28 19:34:43

标签: android layout

以下XML生成我正在寻找的大型粗体文本。

    <TextView
    android:layout_width="match_parent"
    android:layout_height="44dp"
    android:background="#000000"
    android:gravity="center"
    android:text="Review"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#ffffff"
    android:textStyle="bold" />

我认为这个Java会做同样的事情,但我会得到非粗体,默认大小的文本。是什么给了什么?

    LinearLayout container = new LinearLayout(this);
    container.setOrientation(LinearLayout.VERTICAL);
    container.setBackgroundColor(Style.backgroundColor);    

    TextView header = new TextView(this);
    header.setText("Review");
    header.setBackgroundColor(Color.BLACK);
    header.setTextColor(Color.WHITE);
    header.setGravity(Gravity.CENTER);
    header.setTypeface(Typeface.DEFAULT_BOLD);
    header.setTextAppearance(this, android.R.attr.textAppearanceLarge);

    float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 44, getResources().getDisplayMetrics());
    container.addView(header, LayoutParams.MATCH_PARENT, (int)px);

(在您回答“Just use XML”之前,我不能。这需要很好地打包在jar中。)

2 个答案:

答案 0 :(得分:0)

好吧,使用视图的自定义实现“几乎”与使用XML代码相同,但是当您尝试通过Java完成全部操作来扩展自定义视图时,Android会出现一些“错误”;我知道这是肯定的,因为我之前尝试过,并且在XML中使用我的布局工作正常并且使用我的自定义java布局只是没有加载好... 换句话说,几乎没有区别,但你必须写下更多的代码,你的应用程序容易受到这样的小错误。 这是我这次问过的帖子的链接: Android Developers Google Group

注意:您可以将您的proyect打包到jar文件,但Android应用程序使用APK进行安装。我不确定你是否可以安装jar app文件,但我认为不可能。

答案 1 :(得分:0)

尝试使用替代构造函数:

TextView header = new TextView(this, null, android.R.attr.textAppearanceLarge);

请勿在稍后致电setTextAppearance。我的猜测是textAppearanceLarge会覆盖您事先设置的粗体设置。