0

试图在我的视图中创建一条黑线来分隔文本块,但它没有显示出来。文本按原样显示,但我没有看到这条线。

编辑:是否已经测试过按照建议动态添加以及修改我的代码但仍然没有行?我错过了什么吗?

这也是在片段内部,类扩展片段{}

xml代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/travelContainer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    </LinearLayout>

</ScrollView>

Java代码:

    public class Travel extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    return inflater.inflate(R.layout.travel_fragment, container, false);
}


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onViewCreated(view, savedInstanceState);

LinearLayout layout = (LinearLayout)view.findViewById(R.id.travelContainer);

        TextView text = new TextView(getActivity()); 
        int padding = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,4, getActivity().getResources().getDisplayMetrics()); 
        text.setPadding(padding, padding, padding, padding);
        text.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
        text.setTypeface(null, Typeface.BOLD);
        text.setText("TITLE");
        text.setId(123456789);
        layout.addView(text); 

        /* 
    View v = new View(getActivity());
    LinearLayout.LayoutParams viewLp = new LayoutParams(LayoutParams.FILL_PARENT,1);
    viewLp.setMargins(0, 5, 0, 5);
    v.setLayoutParams(viewLp);
    v.setBackgroundColor(0x000);
            */

    View v = getActivity().getLayoutInflater().inflate(R.layout.line, (ViewGroup)getActivity().getCurrentFocus(), false);
    layout.addView(v);


        text = new TextView(getActivity()); 
        padding = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,4, getActivity().getResources().getDisplayMetrics()); 
        text.setPadding(padding, padding, padding, padding);
        text.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);       
        text.setText("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.");
        layout.addView(text); 
}
}
4

3 回答 3

1

您需要以编程方式创建视图吗?

一种简单的方法是创建具有以下属性的视图

<View
    android:layout_width="fill_parent"
    android:layout_height="1dp"
    android:background="#000" />

如果您创建一个名为 line.xml 的新 XML 文件,您可以使用LayoutInflater动态获取视图:

View line = MyActivity.this.getLayoutInflater().inflate(R.layout.line, (ViewGroup) getCurrentFocus(), false);

这个版本将产生更简洁的代码,因为系统会为您完成所有工作。

于 2012-06-16T15:21:54.037 回答
0

在您的布局参数中,您必须将高度设置为 1,并将宽度设置为填充父级。您也只设置了 1 个高度/宽度参数。尝试以下

LinearLayout.LayoutParams viewLp = new LayoutParams(LayoutParams.FILL_PARENT,1);
viewLp.setMargins(0, 5, 0, 5);

此外,您将 LayoutParams 用于 RelativeLayout,但您使用的是 LinearLayout。LinearLayouts 不支持以下内容:

viewLp.addRule(RelativeLayout.BELOW, 123456789);
viewLp.addRule(RelativeLayout.CENTER_HORIZONTAL);

使用 LinearLayout.LayoutParams。LinearLayout 将按照添加的顺序水平或垂直堆叠视图。

于 2012-06-16T15:27:32.130 回答
0

我做了类似的事情,我认为一个简单的方法是覆盖组件的类,尤其是你想要行分隔符的 onDraw() 方法。

我认为您的目标是在每个文本视图的末尾添加一条黑线,因此您可以执行以下操作:

1)创建一个png黑线

2) 声明一个扩展 TextView 的类并覆盖 onDraw 方法并执行以下操作 ==>

private Bitmap line;

然后在构造函数中:

    line = BitmapFactory.decodeResource(context.getResources(), R.drawable.line_thin);
    line = Bitmap.createBitmap(line, 0, 0, this.getWidth(), 1);

然后在 onDraw() 方法上:

    canvas.drawBitmap(line, 0, this.getHeight(), null);

3) 最后,您不要忘记使用您在 XML 中创建的类来更改组件的类型。

我不知道这个解决方案是否适合您,但我认为这是一个不错的解决方案,然后每次创建此 Textview 时都会动态创建该行。

希望能帮助到你。

于 2012-06-16T15:40:42.233 回答