在解析时以编程方式设置两个textview

时间:2013-07-19 11:44:00

标签: android textview

我有一段代码将我的xml值解析为我的android活动,我需要以编程方式在两个文本视图中以水平方向显示解析的xml值,每个textview的值应该是垂直方向。我以非结构化的方式获得了textviews。我需要以结构化的方式显示文本视图。任何人都可以帮我解决这个问题。   例如,对于非结构化输出:

      flag
              false
      id
                0                  

我需要像

这样的输出
      flag   false

      id     0

我创建了像这样的文本视图

    private void createTextView(String text, LinearLayout root, int textSize,
        int width, int height, int gravity) {
    TextView textView = new TextView(context);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width,
            height);
    if (gravity == Gravity.RIGHT) {
        params.setMargins(300, 0, 0, 0);
    }
    if (gravity == Gravity.LEFT) {
        params.setMargins(150, 0, 0, 0);

    }
    if (gravity == Gravity.CENTER) {
        params.setMargins(20, 5, 0, 5);

    }
    textView.setLayoutParams(params);
    textView.setText(text);
    textView.setTextSize(textSize);
    textView.setGravity(params.gravity);

    textView.setTextColor(context.getResources().getColor(
            android.R.color.black));
    root.addView(textView);
}


           private void createTextViewsWithHorizontalOrient(String textOne,
        String textTwo, LinearLayout root) {
    LinearLayout horizontalLinearLayout = new LinearLayout(context);
    LinearLayout horizontalNextLinearLayout = new LinearLayout(context);

    horizontalLinearLayout.setOrientation(LinearLayout.VERTICAL);
    horizontalLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(
            LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

    horizontalNextLinearLayout.setOrientation(LinearLayout.VERTICAL);
    horizontalNextLinearLayout
            .setLayoutParams(new LinearLayout.LayoutParams(
                    LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    horizontalNextLinearLayout.setGravity(Gravity.TOP);
    horizontalLinearLayout.setGravity(Gravity.TOP);

    createTextView(textOne, horizontalLinearLayout, 18,
            android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,
            android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,
            Gravity.LEFT);

    createTextView(textTwo, horizontalNextLinearLayout, 18,
            android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,
            android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,
            Gravity.RIGHT);
    root.addView(horizontalLinearLayout);
    root.addView(horizontalNextLinearLayout);

}

我在方法创建textview更改布局参数

中得到了解决方案
               private void createTextView(String text, LinearLayout root,
                          int textSize,int width, int height, int gravity) {

                        TextView textView = new TextView(context);
              LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(100,
                         height);
              createTextView(textTwo, horizontalNextLinearLayout, 18,
              android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,
              android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,
              Gravity.LEFT);

1 个答案:

答案 0 :(得分:0)

首先,您的命名约定很糟糕。您有 horizo​​ntalLinearLayout ,其方向设置为垂直。

其次,我假设您的根视图是具有垂直方向的LinearLayout。所以很明显,你得到了这个输出。你应该做的是创建一个水平方向的_ horizo​​ntalLinearLayout 。然后在其中放入两个textView,但您需要使用第二个TextView的边距。

最后,如果我是你,我会为一行创建单独的布局文件(所以水平LinearLayout有两个textViews)。然后你得到所有的XML定位,而不是代码。添加布局以查看:

View onewRow = activity.getLayoutInflater().inflate(R.layout.one_row, null, false);
TextView tv1 = onewRow.findViewById(R.id.textView1);
TextView tv2 = onewRow.findViewById(R.id.textView2);
tv1.setText("Flag");
tv2.setText("Your value");
root.addView(onewRow);