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