【问题标题】:equal TextView height in different screen resolution不同屏幕分辨率下相同的TextView高度
【发布时间】:2014-01-12 14:43:57
【问题描述】:

在布局上我有列表视图

<com...DynamicListView 
        android:id="@+id/listview" 
        android:layout_width="fill_parent" 
        android:layout_height="5dp" 
        android:layout_marginLeft="20dp" 
        android:layout_marginRight="20dp" 
        android:layout_marginTop="20dp" 
        android:layout_weight="0.34" 
        android:background="#0000" 
        android:divider="@null" 
        android:dividerHeight="5dp" /> 

添加了第 4 个 TextView。 text_view.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="60dp" 
    android:gravity="center" 
    android:textColor="#000000" 
    android:textSize="@dimen/list_text_size" />

我怎样才能使它们都具有相同的高度并在不同分辨率的屏幕上爬到屏幕上(没有滚动的外观)?

更新

public class StableArrayAdapter extends ArrayAdapter<String> {

public StableArrayAdapter(Context context, int textViewResourceId, List<String> objects) {
    super(context, textViewResourceId, objects);
    for (int i = 0; i < objects.size(); ++i) {
        mIdMap.put(objects.get(i), i);
    }
}

...

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View view = super.getView(position, convertView, parent);
  ...
  int myDPValue = 60;
  myDPValue = (int) ((int) myDPValue * Resources.getSystem().getDisplayMetrics().density);
  (LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, myDPValue);
  view.setLayoutParams(params);

  return view;
}
}

【问题讨论】:

  • 你在说什么? 他们是谁?
  • 列表视图中的项目(文本视图)
  • 您的问题不清楚。请清楚地询问您想要什么(可能添加图片 - 甚至是链接);显示您尝试过的内容;如果出现错误,请显示 logcat
  • 我在列表视图中添加了文本视图。如果我在 text_view.xml 中设置 android:layout_height="60dp" ,例如,在我的设备中一切正常,但在其他项目上很大,它们无法放入 listview 并显示为滚动
  • 我在我的适配器中使用了你的比例算法(我更新了我的帖子)。也许,我没听懂你的意思,但一切照旧

标签: android android-layout listview


【解决方案1】:

如果我正确理解了这个问题,您希望根据各种设备的屏幕尺寸调整高度。为此,您可以利用 res/values/dimens.xml 文件以及 Android 如何进行资源配置。您可以为您想要的每个屏幕密度或尺寸重新定义相同的dimen。请参阅以下链接以获取答案:

【讨论】:

  • 我不明白dimens如何帮助我,如果第一个设备是正常尺寸60dp,第二个40dp,第三个30dp。
  • Android 允许在“res/”目录中进行多种不同的资源配置。 (参见developer.android.com/guide/topics/resources/…)例如,您可以拥有一个“res/values-sw320dp/dimens.xml”和一个“res/values-sw600dp/dimens.xml”。因此,如果您知道您定位的设备的屏幕密度,那么您可以为这些屏幕的尺寸定义不同的值。
【解决方案2】:

如果您不想滚动,则不应使用ListView。您应该改用垂直方向的LinearLayout,如果您想调整它们的大小以适应屏幕上的可用空间,请为项目使用相等的权重。

【讨论】:

  • 不,listview 这就是我需要的。我使用 listview 是因为我发现它的拖放效果很好。
  • @boroloro:拖放是什么意思?
  • @boroloro:这似乎是一个通用框架,所以如果你愿意,你应该也可以使用LinearLayout 来实现它。
  • 我说已经找到了一个适合我的好例子youtube.com/watch?v=_BZIvjMgH-Q
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 2014-08-06
  • 2015-06-29
  • 1970-01-01
  • 2012-05-24
  • 2014-06-10
  • 2010-11-19
相关资源
最近更新 更多