【问题标题】:In android ,how to set layout_marginRight in code在android中,如何在代码中设置layout_marginRight
【发布时间】:2012-07-01 16:10:54
【问题描述】:

下面是一个textview布局,我希望在代码中将layout_marginRight修改为零。

<TextView
                android:id="@+id/status1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginRight="@dimen/keyguard_lockscreen_status_line_font_right_margin"
                android:singleLine="true"
                android:ellipsize="marquee"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textSize="@dimen/keyguard_lockscreen_status_line_font_size"
                android:drawablePadding="4dip"
 />

当我将 aqif 代码复制到我的代码如下时,手机在开机动画时停止。

private void updateStatus1() {
        if (mStatus1View != null) {
            MutableInt icon = new MutableInt(0);
            CharSequence string = getPriorityTextMessage(icon);
            mStatus1View.setText(string);
            LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mStatus1View.getLayoutParams();
            params.rightMargin = 0;
            mStatus1View.setLayoutParams(params);

            mStatus1View.setCompoundDrawablesWithIntrinsicBounds(icon.value, 0, 0, 0);
            mStatus1View.setVisibility(mShowingStatus ? View.VISIBLE : View.INVISIBLE);
        }
    }

【问题讨论】:

  • 您说,“开机动画时手机暂停。”你的应用程序是什么,你的代码是如何在手机启动时执行的?

标签: android layout margin


【解决方案1】:

你可以这样做。

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
params.rightMargin = 30;
view.setLayoutParams(params);

要在dp 中设置值,您可以这样做。

params.rightMargin = (int) (30f * this.getResources().getDisplayMetrics().density);

并且参数的类型取决于其父级,如果您的视图父级是LinearLayout,则您的参数必须是LinearLayout.LayoutParams 类型,如果是RelativeLayout,您的参数必须是RelativeLayout.LayoutParams 类型。

问候, 阿基夫·哈米德

【讨论】:

    【解决方案2】:

    尝试使用ViewGroup.MarginLayoutParams.rightMargin:

    TextView extView tv = (TextView)findViewById(R.id.status1);
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)tv.getLayoutParams();
    //params.setMargins(0, 0, 0, 0); //setMargins(int left, int top, int right, int bottom)
    params.rightMargin=0; 
    tv.setLayoutParams(params);
    

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多