Android,尝试让按钮位于屏幕底部

时间:2012-08-28 23:28:10

标签: android

我正在尝试制作一个简单的应用来展示图片。图像缩放以适合屏幕,然后图像下方有一个下一个和上一个按钮。我希望下一个和上一个按钮位于按钮上,但它们会一直在图像按钮上绘制。因此,每次显示新图像时,它们都会根据图片的大小而上下移动。

我在这里找到了以下解决方案,但它对我不起作用:

android:gravity="bottom"  
android:layout_alignParentBottom="true"

这是xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/backFeetGallery"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/viewimage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/background" />

    <LinearLayout
        android:id="@+id/linearLayout4"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:gravity="bottom"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/butLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="12px"
            android:text=" Left "
            android:textColor="#ff0000ff" />

        <Button
            android:id="@+id/butFavrest"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="12px"
            android:text=" Favrets "
            android:textColor="#ff0000ff" />

        <Button
            android:id="@+id/butEmail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="12px"
            android:text=" email "
            android:textColor="#ff0000ff" />

        <Button
            android:id="@+id/butRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="12px"
            android:text=" Right "
            android:textColor="#ff0000ff" />
    </LinearLayout>

</LinearLayout>

源代码

public class cFeetView extends cBaseView implements OnClickListener {
    cFileNames mFileNames;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.feet);

        // add listeners
        View mLeft = findViewById(R.id.butRight);
        mLeft.setOnClickListener(this);

        // add listeners
        View mRight = findViewById(R.id.butLeft);
        mRight.setOnClickListener(this);

        mFileNames=new cFileNames();
        mFileNames.Start();
        DrawFeet();
    }

    public void DrawFeet()
    {
        int screenHeight;
        ImageView picImage = (ImageView) findViewById(R.id.viewimage);// R.id.viewpic);
        try {
            String FileName = "canon20.png";
            FileName=mFileNames.Current();
            AssetManager assetManager = getAssets();
            InputStream inputStream;
            inputStream = assetManager.open(FileName);
            Bitmap icon = BitmapFactory.decodeStream(inputStream);

            int screenWidth = getWindowManager().getDefaultDisplay().getWidth();
            screenHeight = getWindowManager().getDefaultDisplay().getHeight();

            int bw = icon.getWidth();
            int bh=icon.getHeight();
            float t = (float) screenWidth / (float) bw;

            int iConHeight=(int)((float)bh*t);
            picImage.setImageBitmap(icon);

            // scale it
            picImage.getLayoutParams().width = screenWidth;
            picImage.getLayoutParams().height =iConHeight;
            Bitmap scaledIcon = Bitmap.createScaledBitmap(icon, screenWidth, iConHeight, false);

        } catch (IOException e) {
        }
    }
    // set the top and buttom margins

    public void onClick(View v)
    {
        Intent i;
        switch(v.getId())
        {
        case R.id.butLeft:
            mFileNames.Pre();   
            DrawFeet();
            break;
        case R.id.butRight:
            mFileNames.Next();
            DrawFeet();
            break;              
        }
    }
} // end class

3 个答案:

答案 0 :(得分:2)

而不是LinearLayout,在xml文件中使用RelativeLayout。

LinearLayout仅用于在水平或垂直方向排列它们。

答案 1 :(得分:0)

要使用alignParentBottom,您需要使用RelativeLayout。而且你不需要引力属性。

我对你的特定场景的建议是你有一个RelativeLayout并把你所有的按钮放在一个在底部对齐的LinearLayout和它上面的ImageView。

Psedo:

<RelativeLayout>
   <ImageView />

   <LinearLayout
      android:layout_below="@ImageView_id"
      android:layout_alignParentBottom=true>
   </LinearLayout>
</RelativeLayout>

使用xml编辑:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/backFeetGallery"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/viewimage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:src="@drawable/background" />

    <LinearLayout
        android:id="@+id/linearLayout4"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_below="@id/viewimage"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/butLeft"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="12px"
            android:text=" Left "
            android:textColor="#ff0000ff" />

        <Button
            android:id="@+id/butFavrest"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="12px"
            android:text=" Favrets "
            android:textColor="#ff0000ff" />

        <Button
            android:id="@+id/butEmail"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="12px"
            android:text=" email "
            android:textColor="#ff0000ff" />

        <Button
            android:id="@+id/butRight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="12px"
            android:text=" Right "
            android:textColor="#ff0000ff" />
    </LinearLayout>

</RelativeLayout>

答案 2 :(得分:0)

你需要拥有RelativeLayout中的所有内容。例如,查看我为一个按钮做的示例代码,该按钮与屏幕的底部中心对齐。

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

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:text="Button" />

这是布局的完整布局文件

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

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:text="Button" />

<Button
    android:id="@+id/button4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:text="Button" />

<Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:text="Button" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toRightOf="@+id/button2"
    android:text="Button" />

<Button
    android:id="@+id/button5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_toLeftOf="@+id/button3"
    android:text="Button" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="38dp"
    android:src="@android:drawable/gallery_thumb" />

这是它的样子, enter image description here