android布局 - 使用ImageView

时间:2013-05-24 09:53:03

标签: android android-layout android-imageview android-relativelayout

我想创建以下布局 - http://postimg.org/image/56e9y0hrj/

但是当我使用Relative布局并编写以下代码时,我会得到类似的东西。 http://postimg.org/image/4gm0r15k1/

这是mt xml文件 -

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#5c575c"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_marginTop="2dip"
    android:layout_marginBottom="2dip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="Top Stories"
    android:background="#ccc6ba"
    style="@style/format"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="120dip"
    android:layout_height="160dip"
    android:layout_alignLeft="@+id/textView1"
    android:layout_alignTop="@+id/textView1"
    android:src="@drawable/one" />

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="120dip"
    android:layout_height="160dip"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/imageView1"
    android:src="@drawable/two" />

<TextView
    android:id="@+id/textView2"
    style="@style/format_text"
    android:background="#ccc6ba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageView1"
    android:layout_alignLeft="@+id/imageView1"
    android:text="A sample widget for multiple lines"
    android:layout_alignRight="@id/imageView1"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/textView3"
    style="@style/format_text"
    android:background="#ccc6ba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView2"
    android:layout_alignBottom="@+id/textView2"
    android:layout_alignLeft="@+id/imageView2"
    android:text="A sample widget for multiple lines"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/textView4"
    android:layout_marginTop="10dip"
    android:layout_marginBottom="2dip"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@id/textView2"
    android:text="World"
    android:background="#ccc6ba"
    style="@style/format"
    android:textAppearance="?android:attr/textAppearanceLarge" />
    <ImageView
    android:id="@+id/imageView3"
    android:layout_width="120dip"
    android:layout_height="160dip"
    android:layout_alignLeft="@+id/textView4"
    android:layout_alignTop="@+id/textView4"
    android:src="@drawable/three" />

<ImageView
    android:id="@+id/imageView4"
    android:layout_width="120dip"
    android:layout_height="160dip"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/imageView3"
    android:src="@drawable/four" />

<TextView
    android:id="@+id/textView5"
    style="@style/format_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageView3"
    android:layout_alignLeft="@+id/imageView3"
    android:layout_alignRight="@+id/imageView3"
    android:background="#ccc6ba"
    android:text="A sample widget for multiple lines"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/textView6"
    style="@style/format_text"
    android:background="#ccc6ba"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView5"
    android:layout_alignBottom="@+id/textView5"
    android:layout_alignLeft="@+id/imageView4"
    android:text="A sample widget for multiple lines"
    android:textAppearance="?android:attr/textAppearanceSmall" />

    <TextView
    android:id="@+id/textView7"
    android:layout_marginTop="10dip"
    android:layout_marginBottom="2dip"
    style="@style/format"
    android:background="#ccc6ba"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/imageView3"
    android:layout_below="@+id/imageView3"
    android:text="Cricket"
    android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

我已经通过了http://android-developers.blogspot.in/2009/02/android-layout-tricks-1.htmlhttp://www.mkyong.com/android/android-relativelayout-example/,但找不到解决方案。我使用的图像是由http://dummyimage.com/

生成的尺寸400by300

请帮帮我!

1 个答案:

答案 0 :(得分:0)

可能的布局解决方法,从头开始,应该只显示我的想法而不是testet:在一个父LinearLayout中指定layout_weight =“1”的两个LinearLayout。这会将内部的LinearLayouts分割为相同的大小。在这两个LinearLayouts中,设置imageView和textView。但是,在这里你必须为多个屏幕使用做不同的layout.xml。

<LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:orientation="horizontal">
   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:orientation="vertical"
       android:layout_weight="1">
   <ImageView
       android:id="@+id/imageView1"
       android:layout_width="match_parent"
       android:layout_height="160dp"
       android:scaleType="center"
       android:src="@drawable/one"
       />
   <TextView
       android:id="@+id/textView2"
       style="@style/format_text"
       android:background="#ccc6ba"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"    
       android:text="A sample widget for multiple lines"/>
   </LinearLayout>
   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:orientation="vertical"
       android:layout_weight="1">
   <ImageView
       android:id="@+id/imageView2"
       android:layout_width="match_parent"
       android:layout_height="160dp"
       android:scaleType="center"
       android:src="@drawable/two"
       />
   <TextView
       android:id="@+id/textView3"
       style="@style/format_text"
       android:background="#ccc6ba"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"    
       android:text="A sample widget for multiple lines""/>
   </LinearLayout>
 </LinearLayout>

然后,您已在项目的res-folder中定义了一些新的布局文件夹。您需要不同大小的文件夹。在这些文件夹中,您必须定义一个布局文件,其中图像视图具有不同的高度以匹配相关的屏幕大小。但这超出了框架范围,所以你必须学习一些使用多种屏幕尺寸的方法:

http://developer.android.com/guide/practices/screens_support.html

甚至可以使用片段:

http://developer.android.com/guide/components/fragments.html

http://www.vogella.com/articles/AndroidFragments/article.html

修改

textvies的这种行为是因为屏幕尺寸不同。这就是我所说的,为了让所有人看起来都很好,你必须做的不仅仅是一个布局。以下是一些布局在不同屏幕上的外观示例:

HTC Desire S 3.7英寸

enter image description here

imageViews和TextViews填充整个宽度,因此textViews完全与imageViews一样宽。默认情况下,如果文本太长,textView会自动换行,但这可能取决于设备。通常定义maxLines,这将导致textView中的换行文本。但如果文本比宽度短,则不会换行。

5.1英寸

的设备

enter image description here

这里的文字比宽度短,所以它不会换行。您可以通过将固定大小设置为textView来解决此问题。

但这只是划伤主题,我不能在这里抱怨整件事。您必须学习如何处理不同的布局。您必须将固定大小设置为不同的布局,不同的资源等。