Android 以编程方式设计布局

Posted

技术标签:

【中文标题】Android 以编程方式设计布局【英文标题】:Android Designing Layout programmatically 【发布时间】:2014-07-17 06:57:02 【问题描述】:

如何以编程方式在 android 中制作此布局。

我只想要一个想法而不是整个编码。

【问题讨论】:

为什么图片没有显示?你有人看到这个问题只是我的形象吗? 我可以看到图像。但是你应该多解释一下。哪些部分是布局元素,什么是静态图片? RelativeLayout 几乎一切皆有可能 其实我不知道怎么添加这些类型的参数,android:layout_alignBottom, android:layout_alignLeft 等等 您需要在RelativeLayout.LayoutParams 中使用addRule() 设置它们。见the docs 【参考方案1】:

这是答案,但不是直接答案。这就是我个人以编程方式创建复杂布局的方法。

在 XML 中创建相同的布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_ >

<ImageView
    android:id="@+id/imageView1"
    android:layout_
    android:layout_
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/some_big_image" />

<RelativeLayout
    android:layout_
    android:layout_
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:background="#DD000000" >

    <ImageView
        android:id="@+id/imageView2"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/textView1"
        android:layout_
        android:layout_
        android:layout_alignTop="@+id/imageView2"
        android:layout_toRightOf="@+id/imageView2"
        android:text="TextView"
        android:textColor="@android:color/white" />

    <TextView
        android:id="@+id/textView2"
        android:layout_
        android:layout_
        android:layout_alignBottom="@+id/imageView2"
        android:layout_toRightOf="@+id/imageView2"
        android:text="TextView"
        android:textColor="@android:color/white" />
</RelativeLayout>

现在从 top parentchild

    RelativeLayout mParent = new RelativeLayout(this);
    RelativeLayout.LayoutParams mParentParams = new RelativeLayout.LayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
    mParent.setLayoutParams(mParentParams);

    ImageView mBigImageView = new ImageView(this);
    mBigImageView.setLayoutParams(mParentParams);
    mParent.addView(mBigImageView);

随着您练习,您可以直接编写相同的代码,而无需创建 xml。

【讨论】:

【参考方案2】:

基本思路:

    创建一个RelativeLayout,其中包含一个ImageView和两个底部对齐的TextView

    设置RelativeLayout的alpha来调整透明度

【讨论】:

其实我不知道怎么添加这些类型的参数,android:layout_alignBottom, android:layout_alignLeft 等等。 @Yawar 请看一下这个链接:developer.android.com/guide/topics/ui/layout/relative.html 这会给你一些基本的想法【参考方案3】:

您可以有一种相对布局,其中包含一个用于大图像的图像视图,在它之下还有一个包含图像和文本的线性布局,如“珍珠大陆...”,并且衬里布局的背景应该是 50-60% 透明。 使用形状为 LL 创建背景。并将其设置为对齐父(相对)布局的底部。 希望对你有帮助

【讨论】:

其实我不知道怎么添加这些类型的参数,android:layout_alignBottom, android:layout_alignLeft 等等 最好在 xml 中创建布局,然后在需要的地方进行扩展。充气后为每个项目设置所需的值 上面也提供了一个样本 实际上我在视图分页器控件中有 3 个视图,这三个视图的布局彼此不同。我正在搜索您建议的内容,但找不到任何有用的内容。这就是为什么要以编程方式进行。 如果您有多个视图要显示在视图分页器中,那么您需要确定要在适配器类中显示哪个视图,然后在适配器中扩展相应的视图。所以同样会在 viewpager 中更新。

以上是关于Android 以编程方式设计布局的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在约束布局中添加视图?

Android,以编程方式布局按钮视图?

如何以编程方式在 Android 中包含布局?

android以编程方式将自定义按钮添加到布局

以编程方式更改android布局

Android:当布局已经包含按钮时,如何以编程方式覆盖整个布局?