如何以编程方式使RelativeLayout起作用

沙尔逊

我在View类中创建有效的Layout时遇到问题,该问题不会使程序崩溃。我认为代码中的所有操作均已正确完成,但是可能有一些我不知道的设置,希望你们能向我透露。

我正在尝试使用“清除”按钮和RadioGroup来绘制View。

所以首先,一切正常,但是两个添加的内容视图(btnReset =“ Clear”,btnScale = RadioGroup)彼此悬停。这就是为什么我要添加一个父布局,以便可以轻松管理这些视图的原因。

File1.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     
    DrawView tv = new DrawView(this);
    setContentView(tv);
    addContentView(tv.btnReset, tv.params);
    addContentView(tv.btnScale, tv.paramsRadio);}

DrawView.java

public class DrawView extends View {

    public Button btnReset;
    public RelativeLayout.LayoutParams params;
    public RelativeLayout.LayoutParams paramsRadio;
    public RadioGroup btnScale;

 public DrawView(Context context) {
            super(context);

    btnReset = new Button(context);
    btnReset.setText("Clear Screen");

    btnScale = new RadioGroup(context);
    btnScale.setOrientation(RadioGroup.HORIZONTAL);

    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);

   paramsRadio = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
   RelativeLayout.LayoutParams.WRAP_CONTENT);

我忽略了大部分代码,因为我认为它无关紧要,但除了布局之外,一切都正常。

无论如何,当我尝试创建布局时,我只需添加一些代码:

更改了File1.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     
    DrawView tv = new DrawView(this);
    setContentView(tv);
    addContentView(tv.layout, tv.params); }

更改了DrawView.java

public class DrawView extends View {
    public Button btnReset;
    public RelativeLayout.LayoutParams params;
    public RelativeLayout.LayoutParams paramsRadio;
    public RelativeLayout layout;
    public RadioGroup btnScale;

 public DrawView(Context context) {
            super(context);

    btnReset = new Button(context);
    btnReset.setText("Clear Screen");

    btnScale = new RadioGroup(context);
    btnScale.setOrientation(RadioGroup.HORIZONTAL);

    params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
    RelativeLayout.LayoutParams.WRAP_CONTENT);

   paramsRadio = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
   RelativeLayout.LayoutParams.WRAP_CONTENT);

   layout.addView(btnReset, params);
   layout.addView(btnScale, paramsRadio);

我认为它应该像魅力一样工作,但是不幸的是,当我尝试使用新创建的布局执行任何操作时,我的应用程序崩溃了。该代码有什么问题?

沙尔逊

好吧,经过长时间的战斗,我设法解决了自己的问题:DI没有像@pskink建议的那样解决它,因为老实说对我来说太先进了。我找到了更简单的解决方案。

事实是,您可以在DrawView.java中创建任意数量的视图,但是可以在File1.java中创建的Layout中对它们进行排序!

就像这样:File1.java

protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);     
     LinearLayout ll = new LinearLayout(this);
     ll.setOrientation(LinearLayout.VERTICAL);  
     DrawView tv = new DrawView(this);
     ll.addView(tv.btnReset, tv.params);
     ll.addView(tv.btnScale, tv.paramsRadio);
     ll.addView(tv);
     setContentView(ll);

DrawView.java保持不变:

 public class DrawView extends View {

    public Button btnReset;
    public LinearLayout.LayoutParams params;
    public LinearLayout.LayoutParams paramsRadio;
    public RadioGroup btnScale;

 public DrawView(Context context) {
            super(context);

    btnReset = new Button(context);
    btnReset.setText("Clear Screen");

    btnScale = new RadioGroup(context);
    btnScale.setOrientation(RadioGroup.HORIZONTAL);

    params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);

   paramsRadio = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
   LinearLayout.LayoutParams.WRAP_CONTENT);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何以编程方式枚举枚举类型?

来自分类Dev

如何以编程方式解锁iOS屏幕?

来自分类Dev

如何以编程方式扩展TreeViewer?

来自分类Dev

如何以编程方式打开我的UINavigationController?

来自分类Dev

如何以编程方式生成新网页

来自分类Dev

如何以编程方式绑定此CheckBox?

来自分类Dev

如何以编程方式设置UITableView的dataSource?

来自分类Dev

如何以编程方式绑定版本令牌?

来自分类Dev

如何以编程方式更改Eclipse Preferences

来自分类Dev

如何以编程方式点击AppBarButton?

来自分类Dev

如何以编程方式编写nt:file

来自分类Dev

如何以编程方式单击节点?

来自分类Dev

如何以编程方式(动态)将LinearLayout放在RelativeLayout内部?

来自分类Dev

如何以编程方式设置TextFormattingMode?

来自分类Dev

以编程方式使用给定View.getId()的RelativeLayout.ALIGN_RIGHT不起作用

来自分类Dev

如何以编程方式启动OAuth会话?

来自分类Dev

如何以编程方式回复环聊

来自分类Dev

如何以编程方式启动本地DynamoDB?

来自分类Dev

如何以编程方式运行续集迁移

来自分类Dev

如何以编程方式创建dijit TextBox?

来自分类Dev

如何以编程方式删除表

来自分类Dev

如何以编程方式添加序列?

来自分类Dev

如何以编程方式安装VisualStudio扩展?

来自分类Dev

如何以编程方式调用DiagnosticCommandMBean?

来自分类Dev

如何以编程方式实时读取logcat?

来自分类Dev

如何以编程方式添加NSLayoutConstraints

来自分类Dev

如何以编程方式(动态)将LinearLayout放在RelativeLayout内部?

来自分类Dev

如何以编程方式将ImageView放在RelativeLayout的顶部

来自分类Dev

如何以编程方式将自定义 Java 视图类加载到 RelativeLayout

Related 相关文章

热门标签

归档