0

レイアウトにはボタンが含まれています。ボタンはリニアレイアウトの右上にあるはずですが、重力が機能していないようです。

コード: 私のサービスの 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);

linearlayout 200X200 が作成され、上にあります。しかし、ボタンは右上ではありません。b.setWidth と b.setHeight を使用してみました。役に立ちません。

4

1 に答える 1

2

LinearLayout はデフォルトで水平です。水平 LinearLayout で水平方向に整列することはできません (例: right、center_horizo​​ntal、left)。垂直 LinearLayout の垂直 LinearLayout (例: top center_vertical、bottom) で垂直方向に整列することはできません。

右に揃える必要がある場合は、LinearLayout を垂直に設定するか、FrameLayout などの別の ViewGroup を使用する必要があります。

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/layout/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);
    }
}
于 2013-04-19T08:18:51.187 に答える