【问题标题】:Android linearlayouts not expanding as expectedAndroid线性布局未按预期扩展
【发布时间】:2014-12-09 15:17:56
【问题描述】:

下面的代码创建了一个带有图像、文本视图和 2 个图像按钮的正方形。

看起来像这样:

我想要它使文本始终在 1 行中。正方形的宽度需要扩大,以便包含全文。在图像中,文本被裁剪。两个小按钮(信息和设置)需要位于正方形的角落。还有一个问题,文字不是垂直居中的,应该是。

我不能让它看起来正确。有谁知道如何解决这个问题?

谢谢

public static LinearLayout createNodeWrapper(Activity context, Fish fish) {
    ImageView imageview = createImageView(context, fish);
    TextView nametv = createNameView(context, fish.getName());
    ImageButton info = createButton(context, R.drawable.ic_action_info);
    ImageButton settings = createButton(context, R.drawable.ic_action_settings);

    LinearLayout namewrapper = createNameWrapper(context);
    namewrapper.addView(info);
    namewrapper.addView(nametv);
    namewrapper.addView(settings);

    LinearLayout contentwrapper = createContentWrapper(context, fish);
    contentwrapper.addView(imageview);
    contentwrapper.addView(namewrapper);

    LinearLayout fullwrapper = createFullWrapper(context, fish);
    fullwrapper.addView(contentwrapper);

    return fullwrapper;
}

private static ImageView createImageView(Context context, Fish fish) {
    ImageView imageview = new ImageView(context);
    LinearLayout.LayoutParams params = fish.getImageParams();
    params.gravity = Gravity.CENTER;
    params.setMargins(20, 20, 20, 20);
    imageview.setLayoutParams(params);
    imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
    return imageview;
}

private static TextView createNameView(Context context, String name) {
    TextView nametv = new TextView(context);
    nametv.setText(name);
    nametv.setTextAppearance(context, R.style.node);
    nametv.setPadding(10, 0, 10, 10);
    nametv.setGravity(Gravity.CENTER);
    nametv.setSingleLine(true);
    LinearLayout.LayoutParams textparams = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
    textparams.gravity = Gravity.CENTER;
    nametv.setLayoutParams(textparams);
    return nametv;
}

private static ImageButton createButton(Context context, int resId) {
    ImageButton imageButton = new ImageButton(context);
    imageButton.setPadding(0, 0, 0, 0);
    LinearLayout.LayoutParams imageparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    imageparams.gravity = Gravity.CENTER;
    imageButton.setLayoutParams(imageparams);
    imageButton.setBackgroundResource(resId);
    return imageButton;
}

private static LinearLayout createNameWrapper(Context context) {
    LinearLayout wrapper = new LinearLayout(context);
    wrapper.setOrientation(LinearLayout.HORIZONTAL);
    wrapper.setPadding(0, 0, 0, 0);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    wrapper.setLayoutParams(params);
    return wrapper;
}

private static LinearLayout createContentWrapper(Context context, Fish fish) {
    LinearLayout wrapper = new LinearLayout(context);
    wrapper.setOrientation(LinearLayout.VERTICAL);
    wrapper.setPadding(3, 0, 3, 3);
    LinearLayout.LayoutParams params = fish.getParams();
    wrapper.setLayoutParams(params);
    wrapper.setMinimumWidth(MIN_NODE_WIDTH);
    return wrapper;
}

private static LinearLayout createFullWrapper(Context context, Fish fish) {
    LinearLayout wrapper = new LinearLayout(context);
    wrapper.setBackgroundResource(R.drawable.category_bg);
    wrapper.setOrientation(LinearLayout.VERTICAL);
    LinearLayout.LayoutParams params = fish.getParams();
    params.setMargins(10, 10, 10, 10);
    wrapper.setLayoutParams(params);
    return wrapper;
}

【问题讨论】:

  • 只是出于好奇,你为什么不使用 android xml 来定义你的布局?
  • 我为他们中的许多人动态地这样做。

标签: android android-layout android-linearlayout textview


【解决方案1】:

对于文本,试试这个答案:https://stackoverflow.com/a/2142968/2629065 它会缩小文本,直到它适合你给它的参数。

您填充了顶部,这增加了项目的高度,抵消了重力对齐。移除顶部填充并使用边距,或填充底部。

【讨论】:

    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多