我的布局中有一个简单的按钮。将leftMargin
设置为实际显示不同结果的视图。
my_layout.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/left_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="hello pandora"/>
</RelativeLayout>
在我的活动中,我将leftMargin
属性设置为Button。
Button leftBtn = (Button) findViewById(R.id.left_btn);
LayoutParams params = (LayoutParams) leftBtn.getLayoutParams();
params.leftMargin = 550;
如果我将leftMargin
设置为负值或0,则其工作正常,但如果我将该值设置为大于屏幕宽度,则只需调整大小/压缩按钮。我期待按钮超出界限,如负值。
我希望第3张图片中的按钮超出第1幅图像中的按钮。
请不要说在布局中设置按钮layout_alignParentRight="true"
,在活动中设置rightMargin = -50
(这样可行),因为我想从左到右移动按钮。
答案 0 :(得分:0)
当你使用leftMargin = 550时,你可以使用max line = 1在按钮的一行中显示完整的文字;
试试这个
<Button
android:id="@+id/left_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:maxLines="1"
android:text="hello pandora"/>
答案 1 :(得分:0)
你好像这样编辑你的按钮属性,
机器人:layout_gravity = “CENTER_HORIZONTAL”
android:singleLine =“true”
并将父布局更改为frameLayout
答案 2 :(得分:0)
我假设将一个大于屏幕尺寸(例如1000 dp)的特定宽度分配给父亲RelativeLayout应解决您的问题。
另外,为什么要制作屏幕外的UI元素?什么是期望的行为?也许过渡动画会更好?
修改强>
我已经尝试了动画+存储Button的测量宽度。它似乎工作。 你能试试GB吗?
<强> MainActivity.java 强>
public class MainActivity extends Activity {
final Context context = this;
Button mButton;
int mButtonWidth; // Measured width of Button
int amountToMove; // Amount to move the button in the x direction
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
amountToMove = 600;
mButton = (Button) findViewById(R.id.button);
// Measure Button's width
mButton.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
mButtonWidth = mButton.getMeasuredWidth();
// Simple onClick listener showing a Toast
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"Hello Pandora clicked!",Toast.LENGTH_SHORT).show();
}
});
// Onclick listener for the other button
Button toggle = (Button) findViewById(R.id.toggle);
toggle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Animate the other button
TranslateAnimation a = new TranslateAnimation(0, amountToMove, 0, 0);
a.setDuration(1000);
// Finalize movement when animation ends
a.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mButton.getLayoutParams();
// Restore measured width and change left margin
lp.width = mButtonWidth;
lp.leftMargin = lp.leftMargin + amountToMove;
mButton.setLayoutParams(lp);
amountToMove = -amountToMove;
}
@Override
public void onAnimationStart(Animation animation) { /* Do nothing */ }
@Override
public void onAnimationRepeat(Animation animation) { /* Do nothing */ }
});
mButton.startAnimation(a);
}
});
}
}
<强> activity_main.xml中强>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello Pandora"
android:id="@+id/button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Move the other button"
android:id="@+id/toggle"/>
</LinearLayout>
编辑2
它也可以在GB模拟器上工作(Button被剪切,可点击)。