如何使我的应用程序与所有屏幕尺寸兼容,而不为它制作不同的布局文件?

时间:2017-03-08 09:33:28

标签: android xml android-studio

我有一个按钮的线性布局,所以当我在不同的手机上运行应用程序时,一些按钮会被隐藏。由于我的应用程序在代码方面已经准备好所以我想要一些简短的技术使其兼容所有屏幕尺寸。

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    tools:context="com.example.android.hiha.MainActivity"
    android:background="@drawable/main_activity_cover">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <include layout="@layout/tool_bar"
      android:id="@+id/toolbar"></include>

<RelativeLayout
    android:id="@+id/btn_list_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:layout_below="@id/toolbar">
    <include
        layout="@layout/button_list"
        android:id="@+id/button_list"></include>
</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/btn_list_layout"
    android:layout_alignParentBottom="true"
    android:gravity="bottom">

    <include
        layout="@layout/bottom_section_main"
        android:id="@+id/bottom_section_main"></include>

</RelativeLayout>
</RelativeLayout>
</ScrollView>

button_list.xml(横向)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp">

        <ImageView
            android:id="@+id/about_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/about"
            android:layout_gravity="center"
            android:elevation="4dp"/>

        <TextView
            android:id="@+id/about_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="About"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"/>

        <ImageView
            android:id="@+id/digital_lib_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/digital_library"
            android:layout_gravity="center"
            android:elevation="4dp"
            android:onClick="onClick"/>
        <TextView
            android:id="@+id/digital_lib_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="Digital Library"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"/>

        <ImageView
            android:id="@+id/blogs_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/blog"
            android:layout_gravity="center"
            android:elevation="4dp"
            android:onClick="onClick"/>
        <TextView
            android:id="@+id/blogs_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="Forums/Blogs"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"/>

        </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp">

        <ImageView
            android:id="@+id/affltd_organization_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/organization"
            android:layout_gravity="center"
            android:elevation="4dp"
            android:onClick="onClick"/>
        <TextView
            android:id="@+id/affltd_organization_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="Organizations"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"/>
        <ImageView
            android:id="@+id/gallery_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/gallery"
            android:layout_gravity="center"
            android:elevation="4dp"
            android:onClick="onClick"/>
        <TextView
            android:id="@+id/gallery_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="Gallery"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"/>
        <ImageView
            android:id="@+id/feedback_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/feedback"
            android:layout_gravity="center"
            android:elevation="4dp"
            android:onClick="onClick"/>
        <TextView
            android:id="@+id/feedback_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="Feedback"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"/>

        </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp">
        <ImageView
            android:id="@+id/scientific_proof_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/scientific_proof"
            android:layout_gravity="center"
            android:elevation="4dp"
            android:onClick="onClick"/>
        <TextView
            android:id="@+id/scientific_proof_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="Scientific Proof"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"/>


        <ImageView
            android:id="@+id/tender_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/tender"
            android:layout_gravity="center"
            android:elevation="4dp"
            android:onClick="onClick"/>
        <TextView
            android:id="@+id/tender_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="Tenders"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="20dp"/>

        <ImageView
            android:id="@+id/contact_us_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@drawable/contact"
            android:layout_gravity="center"
            android:elevation="4dp"
            android:onClick="onClick"/>
        <TextView
            android:id="@+id/contact_us_txt_view"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:text="Contact Us"
            android:textStyle="bold"
            android:gravity="center"
            android:textColor="#FFFFFF"
            android:layout_gravity="center"
            android:layout_marginBottom="10dp"/>
    </LinearLayout>
</LinearLayout>

MainActivity.java

import android.app.Dialog;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    ImageView about_btn;

    ImageView feedbackBtn;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getResources().getConfiguration().orientation ==
                Configuration.ORIENTATION_PORTRAIT) {
            setContentView(R.layout.activity_main);
        } else {
            setContentView(R.layout.activity_main);
        }
        about_btn=(ImageView)findViewById(R.id.about_btn);
        about_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Create custom dialog object
                final Dialog dialog = new Dialog(MainActivity.this);
                // Include dialog.xml file
                dialog.setContentView(R.layout.about_dialog);
                // Set dialog title
                dialog.setTitle("Choose one");
                dialog.show();
                ImageView sarasvati_btn = (ImageView) dialog.findViewById(R.id.sarasvati_btn);
                sarasvati_btn.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent i=new Intent(MainActivity.this,Sarasvati_Activity.class);
                        startActivity(i);
                        dialog.dismiss();
                    }
                });

                ImageView about_btn_dialog=(ImageView) dialog.findViewById(R.id.about_btn_dialog);
                about_btn_dialog.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent i=new Intent(MainActivity.this,About_Us_Activity.class);
                        startActivity(i);
                        dialog.dismiss();
                    }
                });
            }
        });

        feedbackBtn=(ImageView)findViewById(R.id.feedback_btn);
        facebook=(ImageView)findViewById(R.id.facebook_icon);
        twitter=(ImageView)findViewById(R.id.twitter_icon);
        youtube=(ImageView)findViewById(R.id.youtube_icon);
        instagram=(ImageView)findViewById(R.id.instagram_icon);
 }
    public void onClick(View v){
        switch (v.getId()){

            case R.id.feedback_btn:
                Intent j=new Intent(this,FeedbackActivity.class);
                startActivity(j);
                break;
            case R.id.contact_us_btn:
                Intent k=new Intent(this,Contact_Us_Activity.class);
                startActivity(k);
                break;
            case R.id.affltd_organization_btn:
                Intent gs = new Intent(this,AffiliatedOrganizationsActivity.class);
                startActivity(gs);
                break;

            case R.id.gallery_btn:
                Intent l=new Intent(this,Gallery.class);
                startActivity(l);
                break;

            case R.id.scientific_proof_btn:
                Intent sc=new Intent(this,Scientific_Evidences_Actiivity.class);
                startActivity(sc);
                break;

            case R.id.blogs_btn:
                Intent blogs=new Intent(this,BlogActivity.class);
                startActivity(blogs);
                break;

            case R.id.tender_btn:
                Intent tender=new Intent(this,WebViewActivity.class);
                tender.putExtra("URL","url");
                startActivity(tender);
                break;
            case R.id.digital_lib_btn:
                Intent lib=new Intent(this,DigitalLibraryActivity.class);
                startActivity(lib);
                break;

            default:
                break;
        }
    }
   @Override
    public void onBackPressed() {
        //Execute your code here
        finish();

    }

    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        int orientation;
        if (getResources().getConfiguration().orientation ==
                Configuration.ORIENTATION_PORTRAIT) {
             orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
            // or = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
        }else {
            orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
        }
        // Add code if needed
        setRequestedOrientation(orientation);
    }
}

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

使用layout_weight。研究它们。我已经开始使用layout_weight,它们可以调整到任何屏幕大小。权重用于LinearLayouts和TableLayouts。可能会有更多,但这些是我使用它们的两个。如果你想在项目之间留出空格,请转到布局文本屏幕并输入

<View

然后按Enter键。它应该从那里引导你。观点也可以有重量。

答案 2 :(得分:0)

不要为按钮或TextView提供任何修复大小 根据您提供的上述代码

<ImageView
        android:id="@+id/about_btn"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/about"
        android:layout_gravity="center"
        android:elevation="4dp"/>``

Imageview你为(高度和宽度)提供50dp的修正大小。图像视图当您运行不同的手机时,高度和宽度永远不会改变。 所以大多数使用Wrap_content和Match_Parent