[英]What is the alternative to AbsoluteLayout in Android?
我看到帖子說FrameLayout是另一種選擇,我應該使用邊距來定位事物(這對我來說非常直觀,但是好吧......如果它有效,我會接受它)。 但是,我無法讓它工作,所以,我正在尋求幫助。
這是我的代碼
FrameLayout layout = new FrameLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
Button btn = new Button(this);
btn.setBackgroundResource(R.drawable.btn);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.setMargins(100,100,100,100);
btn.setLayoutParams(lp); //i've tried with and without this line, no change
layout.addView(btn , lp);
無論我做什么,按鈕都是0,0。 當我將lp的LayoutParam更改為FILL_PARENT時,按鈕會被拉伸以占據整個屏幕(這很有意義)。
你如何在屏幕上的其他地方畫畫,不管其他地方是什么?
一如既往,超級感激提前。
[編輯]看來我的問題並不完全清楚(給出答案)所以......
在上面的代碼中,目的是創建一個按鈕,將其傳遞給布局並讓它在屏幕上以100,100繪制。
我知道這可能意味着不同設備上有不同的東西。 我很好。 我只需要一種方法,以編程方式,並在運行時,將項目放在SPECIFIC位置。 我不想依靠引力(或熱力學定律)。 我只想指定一個位置並讓元素出現在那里:)
正如許多人所指出的那樣,在屏幕上的絕對像素位置設置按鈕是一個非常糟糕的主意,並且永遠不會在所有可用的Android手機上工作。 我確信有更好的方法來實現您想要的布局。
但是,要回答問題:在運行時定位它可以使用AbsoluteLayout.LayoutParms。
AbsoluteLayout absoluteLayout = //get absolute layout
Button button = new Button();
AbsoluteLayout.LayoutParms params = absoluteLayout.generateDefaultLayoutParams();
params.x = 100;
params.y = 100;
absoluteLayout.addView(button, params);
有關不同可用布局的詳細說明,請訪問http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts
因為我沒有從你的描述中完全理解你想要完成什么(你想覆蓋一些東西嗎?)也許那里的視覺例子可以幫助你理解布局如何工作以及如何在它們上面定位東西。
布局的最終目標究竟是什么? 如果你需要的只是一個按鈕 - 比如說,在屏幕的中央,你可以制作一個布局:
<RelativeLayout
android:xmlns="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
>
<Button
android:id="@+id/the_button"
android:layout_width="wrap_content"
android:layout_height = "wrap_content"
android:text="@string/the_button_text"
/>
</RelativeLayout>
AbsoluteLayout是一個壞主意,因為您需要支持大量的屏幕分辨率。 一個屏幕上的100個像素可能是中途,而在更高的dpi設備上,屏幕上可能不到四分之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.