gpt4 book ai didi

android - 在 Android 的 FrameLayout 中放置 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:29 27 4
gpt4 key购买 nike

我想以编程方式在 FrameLayout 中添加一个 View ,并将其放置在布局中具有特定宽度和高度的特定点。 FrameLayout 支持吗?如果不是,我应该使用中间 ViewGroup 来实现吗?

int x; // Can be negative?
int y; // Can be negative?
int width;
int height;
View v = new View(context);
// v.setLayoutParams(?); // What do I put here?
frameLayout.addView(v);

我最初的想法是在 FrameLayout 中添加一个 AbsoluteLayout,并将 View 放在 AbsoluteLayout 中。不幸的是,我刚刚发现 AbsoluteLayout 已被弃用。

任何指针将不胜感激。谢谢。

最佳答案

以下示例(工作代码)展示了如何在 FrameLayout 中放置一个 View (EditText)。它还显示了如何使用 FrameLayout 的 setPadding setter 设置 EditText 的位置(每次用户单击 FrameLayout 时,EditText 的位置都设置为单击的位置):

public class TextToolTestActivity extends Activity{
FrameLayout frmLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

frmLayout = (FrameLayout)findViewById(R.id.frameLayout1);
frmLayout.setFocusable(true);
EditText et = new EditText(this);

frmLayout.addView(et,100,100);
frmLayout.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("TESTING","touch x,y == " + event.getX() + "," + event.getY() );
frmLayout.setPadding(Math.round(event.getX()),Math.round(event.getY()) , 0, 0);
return true;
}
});

}

主.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_height="fill_parent" android:layout_width="fill_parent">
</FrameLayout>

</LinearLayout>

关于android - 在 Android 的 FrameLayout 中放置 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3849343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com