【问题标题】:How to align an ImageButton in Android FrameLayout programmatically如何以编程方式在 Android FrameLayout 中对齐 ImageButton
【发布时间】:2016-02-04 05:51:05
【问题描述】:

我的应用布局是 FrameLayout。我想将 ImageButton 对齐到框架布局的右上方。我试过下面的代码不起作用。

    mImageButton = new ImageButton(mContext);
    LayoutParams ll = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT );
    ll.gravity = Gravity.RIGHT;
    mImageButton.setLayoutParams(ll);
    mImageButton.setImageDrawable(getResources().getDrawable(R.drawable.ic_menu_moreoverflow_normal_holo_light));
    this.addView(mImageButton);

预期输出

【问题讨论】:

标签: android android-imagebutton android-framelayout


【解决方案1】:

我觉得你应该把 LayoutParams 的构造代码改成:

LayoutParams ll = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ll.gravity = Gravity.TOP | Gravity.RIGHT;

在您的代码中,您将 layout_widthlayout_height 值设置为 MATCH_PARENT ,因此您的 ImageView 将填充您的所有父 FrameLayout。

【讨论】:

    【解决方案2】:

    试试这个,

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    
    params.gravity = Gravity.TOP | Gravity.RIGHT;
    
    mImageButton.setLayoutParams(params);
    

    【讨论】:

    • 检查答案是否是更好的解决方案@Krishna
    【解决方案3】:

    我认为您需要在布局参数中提供高度宽度。因为使用 match_parent 会占用父级的宽度和高度,或者您可以使用 WRAP_CONTENT。

     mImageButton = new ImageButton(mContext);
    LayoutParams ll = new LayoutParams(width,height);
    ll.gravity = Gravity.RIGHT | Gravity.TOP;
    mImageButton.setLayoutParams(ll);
    mImageButton.setImageDrawable(getResources().getDrawable(R.drawable.ic_menu_moreoverflow_normal_holo_light));
    this.addView(mImageButton);
    

    【讨论】:

    • 我忘记添加 Gravity.TOP。主要问题是您使用的是 MATCH_PARENT。现在检查这也应该有效。您也可以为图像按钮指定特定的宽度和高度,这就是我提到宽度高度的原因。我还提到你可以使用包装内容
    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 2011-10-08
    • 1970-01-01
    • 2017-06-05
    • 2011-08-31
    • 1970-01-01
    • 2013-01-06
    相关资源
    最近更新 更多