Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何以编程方式为多分辨率设置更好的按钮布局_Android_Button - Fatal编程技术网

Android 如何以编程方式为多分辨率设置更好的按钮布局

Android 如何以编程方式为多分辨率设置更好的按钮布局,android,button,Android,Button,我在线性布局上有一个设置按钮,并且我通过编程方式设置按钮配置 buttonEdit = new ArrayList<ButtonData>(); buttonEdit.add(new ButtonData(1, "one", R.drawable.1)); buttonEdit.add(new ButtonData(2, "two", R.drawable.2)); buttonEdit.add(new ButtonData(3, "three", R.drawable.3)); b

我在线性布局上有一个设置按钮,并且我通过编程方式设置按钮配置

buttonEdit = new ArrayList<ButtonData>();
buttonEdit.add(new ButtonData(1, "one", R.drawable.1));
buttonEdit.add(new ButtonData(2, "two", R.drawable.2));
buttonEdit.add(new ButtonData(3, "three", R.drawable.3));
buttonEdit.add(new ButtonData(4, "four", R.drawable.4));
buttonEdit.add(new ButtonData(5, "five", R.drawable.5));

LayoutParams lp=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
for (ButtonData button : buttonEdit) {
  Button btn = new Button(getApplicationContext());
  btn.setId(button.getButtonID());
  btn.setBackgroundResource(button.getBackgroundResource());
  btn.setOnClickListener(buttonOnclickListener);
  btn.setHeight(56);
  btn.setWidth(48);

  LinearLayout ll = new LinearLayout(getApplicationContext());
  ll.setLayoutParams(lp);
  ll.setOrientation(LinearLayout.VERTICAL);
  ll.setPadding(10, 0, 10, 0);

  btn.setGravity(Gravity.CENTER_HORIZONTAL);
  TextView textLabel = new TextView(getApplicationContext());
  textLabel.setText(button.getButtonName());
  ll.addView(btn);
  ll.addView(textLabel);

  linearLayoutData.put(String.valueOf(button.getButtonID()), ll);
  buttonObject.put(String.valueOf(button.getButtonID()), btn);
}

在代码列表中,我设置了一个左右填充10。因此,用户可以看到按钮之间有一个单独的空间。所以问题是,当我安装多分辨率QVGA、HVGA、WVGA的应用程序时,它们的间距不同。QVGA更宽,WVGA更窄。我该怎么办?

我建议您使用xml定义的布局来确定对象在屏幕上的外观。在xml中定义布局时,可以使用dp的逻辑单位,该单位是根据屏幕分辨率设置的间距。如图所示,假设您在名为button_layout.xml的文件中定义:

这仅作为如何使用布局的说明。实际上,您可以使用所需的属性定义布局,还可以通过编程设置所有特定于具体情况的属性。最重要的是: -您将更容易理解布局 -您可以以dp的相对单位指定边距和填充等


编辑:如果你真的坚持要在代码中完成这项工作,这就是你通过编程指定dp的方式。尽管如此,我还是建议尽可能多地使用布局解决方案。

hi@BorisStrandjev,感谢您建议使用xml中定义的布局。但是我的应用程序是动态的,所以我不使用xml。问题在于多分辨率中的不同填充度量。如何以编程方式说明dp/dip测量。。。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="4dp">

    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
    android:textSize="16.0sp" />

    <Button android:id="@+id/my_button"
        android:layout_width="wrap_content"
        android:layout_marginLeft="10dip"
        android:layout_marginRight="10dip"/>
</LinearLayout>
LayoutInflater inflater;
inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout linearLayout = (TableLayout) inflater.inflate(R.id.button_layout, null);
linearLayout.findViewById(R.id.line_id).setText("One"); // Or two or three as you wish
main_activity_layout.addView(linearLayout); //adding yet another button