我覆盖了一个linearlayout。布局包含一个按钮。按钮应该在linearlayout的右上方。但重力似乎不起作用。
CODE: 在我的服务的onCreate方法内。
final WindowManager.LayoutParams params3 = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
LinearLayout ll=new LinearLayout(this);
LinearLayout ll2=new LinearLayout(this);
LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
lp.gravity=Gravity.RIGHT;
lp.width=30;
lp.height=30;
b=new Button(this);
b.setBackgroundResource(R.drawable.x);
params3.gravity=Gravity.TOP;
params3.height=200;
params3.width=200;
ll.addView(b, lp);
wm.addView(ll, params3);
线性布局200X200已创建并位于顶部。但按钮不是右上角。我尝试使用 b.setWidth和b.setHeight。没有用。
答案 0 :(得分:2)
默认情况下,LinearLayout是水平的 您不能在水平LinearLayout中水平对齐(例如right,center_horizontal,left),并且在垂直LinearLayout中不能垂直对齐垂直LinearLayout(例如top center_vertical,bottom)。
如果需要将其对齐,则必须将LinearLayout设置为垂直或使用其他ViewGroup,例如FrameLayout。
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinarLayout.VERTICAL);
Ant the Buttom将始终处于领先地位,因为它是第一项。 为什么不在xml中做呢?少量代码会更容易。
编辑: 要将按钮放在VideoView的右上角,您的布局将如下所示。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<VideoView
android:id="@+id/videoView1"
android:layout_width="200dp"
android:layout_height="200dp" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:layout_alignTop="@+id/videoView1"
android:layout_alignRight="@+id/videoView1"
android:text="Button" />
</RelativeLayout>
将此布局放在项目的布局res文件夹中。 项目/ RES /布局/ your_layout.xml
将布局附加到活动窗口:
public final class YourActivity
extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
// Get VideoView
VideoView vv = (VideoView) findViewById(R.id.videoView1);
//get Button reference
View button = findViewById(R.id.button1);
}
}