我使用LinearLayout显示一些ImageButtons。基本上我打算做的是给每个ImageButton一个特定的固定大小,然后根据屏幕大小,连续显示ImageButton的数量。理想情况下,在手机上连续只有2个ImageButtons。
但是当使用LinearLayout时,发生的事情是,不是将额外的ImageButtons移动到一行上的下一行,而是将ImageButtons切断。
以下是代码:
x.y+=b;
答案 0 :(得分:0)
复制此代码并尝试
public class MyActivity extends Activity implements MyInterfaceListener{
@Override
public void myMethod(yourParameters) {
//do your stuff here. do whatever you want to do with the //parameter list which is nothing but data from FragmentA.
FragmentB fragment = (FragmentB) getSupportFragmentManager().findFragmentById(R.id.yourFragmentB);
fragment.methodInFragmentB(sendDataAsArguments);// calling a method in FragmentB and and sending data as arguments.
}
}
答案 1 :(得分:0)
LinearLayout不会将事物从一行包装到另一行。我不认为提供SDK的那个可以做到这一点,但我确定有一些第三方的。
您有多种选择。
每行只放少一些(每行需要一个单独的LinearLayout)。
在运行时构建行,而不是在XML中静态声明它们。它有点棘手,但你可以在代码中创建每个按钮,然后决定它是否适合当前行。如果没有,则创建一个新的LinearLayout并将其添加到整体布局中。
您可以创建自己的布局。这并不像看起来那么难。这项工作基本上以两种方式进行:onMeasure()和onLayout()。
顺便说一下,我认为你可能会遇到一些偶然的问题,因为你正在整合来自RelativeLayout的标签(例如android:layout_alignParentTop =" true"),这些标签与LinearLayout无关。此外,对于LinearLayout,请务必指定方向。
这里有一些代码草图(我已经省略了参数,但这会给你一个模型):
LinearLayout outerLayout = (LinearLayout)findViewById (R.id.outer_layout);
LinearLayout rowLayout = null;
int rowWidth = 0;
int screenWidth = get screen width;
for (int i = 0; i < buttonCount; i++)
{
ImageButton b = new ImageButton();
b.setText(); b.... // other attributes;
// add to current row
if (rowLayout != null)
if (b.getIntrinsicWidth() + rowWidth > screenWidth)
rowLayout = null;
if (rowLayout == null)
{
rowLayout = new LinearLayout();
outerLayout.add (rowLayout);
}
rowLayout.add (b);
rowWidth += b.getIntrinsicWidth();
}
在实际布局之前获取尺寸是很棘手的。换句话说,您无法创建按钮然后使用getWidth()。它将返回0. getIntrinsicWidth()我相信它会起作用,但不包括你可能想要的边距或其他调整。所以你必须手动添加它们。
或者,可以将元素渲染到位图,然后获取它们的尺寸。在你的情况下,第一种方式可能更容易和充分。
我在这里和那里省略了一些参数是有利的。写的代码太多了:)