Как сделать так, чтобы кнопки автоматически уменьшали размер экрана? - PullRequest
0 голосов
/ 18 января 2012

Привет. Я пытался понять это, но не могу.У меня есть эта кнопка

<Button android:layout_alignLeft="@+id/button1" android:layout_below="@+id/button2"                
android:id="@+id/button3" 
android:layout_width="235dp" 
android:text="@string/spire"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content" 
>

Когда эта кнопка появляется на меньшем экране, как я могу сделать так, чтобы кнопка также масштабировалась меньше?Спасибо!

РЕДАКТИРОВАТЬ: Хорошо, вот новый код.Но я не уверен, как заставить работать функцию редактирования?мне нужно импортировать что-то?

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.DisplayMetrics;
import android.view.View;
import android.content.Intent;
import android.content.SharedPreferences;
import android.widget.Button;
public void getDisplay(){
    SharedPreferences pref =  PreferenceManager.getDefaultSharedPreferences(this);
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
        switch(metrics.densityDpi){
        case DisplayMetrics.DENSITY_LOW:
            edit.putInt("SIZE", 12).commit();
            edit.putInt("POSITION", -8).commit();
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            edit.putInt("SIZE", 16).commit();
            edit.putInt("POSITION", -6).commit();
            break;
        case DisplayMetrics.DENSITY_HIGH:
            edit.putInt("SIZE", 25).commit();
            edit.putInt("POSITION", 8).commit();
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            //edit.putInt("SIZE",35).commit();
            //edit.putInt("POSITION",30);
            break;
        }
}

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

    goHereButton  = (Button) findViewById(R.id.button1);
    goHereButton.setWidth(20);
    goHereButton.setOnClickListener(new View.OnClickListener() 
    {
       public void onClick(View arg0) 
       {
       Intent i = new Intent(UMassGuide.this, DirectionsScreenActivity.class);
       startActivity(i);
       }
    });

И что мне делать в XML-файле?удалить ширину?

Ответы [ 2 ]

2 голосов
/ 18 января 2012

, так как вы устанавливаете жесткую ширину, вам придется сделать что-то вроде этого

public void getDisplay(){
    SharedPreferences pref =  PreferenceManager.getDefaultSharedPreferences(this);
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
        switch(metrics.densityDpi){
        case DisplayMetrics.DENSITY_LOW:
            edit.putInt("SIZE", 12).commit();
            edit.putInt("POSITION", -8).commit();
            break;
        case DisplayMetrics.DENSITY_MEDIUM:
            edit.putInt("SIZE", 16).commit();
            edit.putInt("POSITION", -6).commit();
            break;
        case DisplayMetrics.DENSITY_HIGH:
            edit.putInt("SIZE", 25).commit();
            edit.putInt("POSITION", 8).commit();
            break;
        case DisplayMetrics.DENSITY_XHIGH:
            //edit.putInt("SIZE",35).commit();
            //edit.putInt("POSITION",30);
            break;
        }
}

в зависимости от размера экрана создать ширину

тогда при создании кнопки используйте

Button button = (Button)findViewById(R.id.your_button_id);
button.setWidth(pixels)

setWidth устанавливает ширину в пикселях, поэтому вам, возможно, придется поэкспериментировать с размерами, чтобы получить то, что вы хотите на разных размерах экрана

0 голосов
/ 19 января 2012

В дополнение к ответу @tyczj вы можете позвонить:

Button button = (Button)findViewById(R.id.your_button_id);
button.setLayoutParams(new LayoutParams(pixels, LayoutParams.WRAP_CONTENT));
...