将文本从片段发送到我想使用canvas.drawText的自定义视图

时间:2013-02-15 08:09:38

标签: android android-fragments android-canvas android-view

我是Android新手,想要将一些文本从片段传递到自定义视图。在自定义视图中,我想使用canvas.drawText来定位字符串。我想使用canvas.drawText的原因是为了与某些图形的位置保持一致。

这是什么程序?

为了澄清,我的片段有这样的东西:

public class Fragment1 extends Fragment {

private TextView view;
private TextView txtBox;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_layout, container,false);
    txtBox = (TextView) view.findViewById(R.id.TxtBox);
            String myString = "testing";
            txtBox.setText(myString);
    return view;
    }
}

我有一个View1的fragment_layout.xml文件(我的自定义视图):

<com.example.stuff.View1
    android:id="@+id/TxtBox"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

我希望在自定义视图中进行调用:

public class View1 extends TextView {

    //constructors:
    public View1(Context context, AttributeSet ats, int ds) {
        super(context, ats, ds);
        init();
    }

    public View1(Context context) {
        super(context);
        init();
    }

    public View1(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
...
canvas.drawText(myString, margin1, margin2, paint);
....
}

...我想要的是从Fragment1.java中获取myString到View1.java。

2 个答案:

答案 0 :(得分:1)

您可以动态创建com.example.stuff.View1自定义视图,即不要将其添加到xml中,而是使用代码添加它。然后您可以传递constructor的{​​{1}}中的文字 其他方法可能是在com.example.stuff.View1类中创建一个方法并在那里设置文本。例如

com.example.stuff.View1

然后在你的代码中执行类似这样的操作

public class View1 extends TextView {

    //constructors:
    public View1(Context context, AttributeSet ats, int ds) {
        super(context, ats, ds);
        init();
    }

    public View1(Context context) {
        super(context);
        init();
    }

    public View1(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public void setMyText(String string) {
        myString=string;
    }
...
canvas.drawText(myString, margin1, margin2, paint);
....
}

答案 1 :(得分:0)