我在项目XML(下面的布局片段)中添加了一个BarChart:
<RelativeLayout
android:id="@+id/relative_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<com.github.mikephil.charting.charts.BarChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:id="@+id/stepsTitle_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:textSize="28sp"
android:layout_below="@+id/chart"
android:text="STEPS TODAY"
android:layout_marginTop="8dp" />
我在onCreate()方法中将数据添加到图表中:
chart = (BarChart) findViewById(R.id.chart);
chart.setLogEnabled(true);
chart.setDrawBarShadow(false);
chart.setDrawValueAboveBar(true);
chart.setDescription("");
// if more than 60 entries are displayed in the chart, no values will be
// drawn
chart.setMaxVisibleValueCount(60);
List<String> usernamesArray = new ArrayList<String>();
//ArrayList<Long> stepsArray = new ArrayList<Long>();
List<BarEntry> entryArray = new ArrayList<BarEntry>();
usernamesArray.add("a");
usernamesArray.add("b");
usernamesArray.add("c");
BarEntry entry1 = new BarEntry(500, 0);
BarEntry entry2 = new BarEntry(500, 1);
BarEntry entry3 = new BarEntry(500, 2);
entryArray.add(entry1);
entryArray.add(entry2);
entryArray.add(entry3);
BarDataSet dataSet = new BarDataSet(entryArray, "Steps");
dataSet.setColor(Color.rgb(104, 241, 175));
BarData data = new BarData(usernamesArray, dataSet);
//graphRow.addView(chart);
//leaderboard_tableLayout.addView(graphRow);
//chart = new BarChart(this);
chart.setData(data);
chart.fitScreen();
chart.setBackgroundColor(Color.WHITE);
chart.invalidate();
但是,图表对象没有显示;事实上,我在图表所在的地方根本看不到任何东西。
对我可能遗失的任何想法?如果有必要,我当然可以提供更多细节。
谢谢!
答案 0 :(得分:2)
所以事实证明宽度和高度都设置为0,所以我从&#34; match_parent&#34;以dp&s为单位的显式设置(400dp和200dp,相应地),这解决了问题。
答案 1 :(得分:0)
您可以使用以下代码根据移动设备或平板电脑设置宽度。我添加了几个参数,你可以添加widtth&amp;高度以及使代码更智能。
代码 -
/* Start of setMyDevice() */
public static void setMyDevice(int screen_density, XAxis xa) {
Log.e("Logger:Utility", "setMyDevice() Called");
// int screen_density = (getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK);
if (screen_density == Configuration.SCREENLAYOUT_SIZE_LARGE || screen_density == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
//The device is a tablet or at least has the screen density of a tablet
xa.setLabelRotationAngle(-35);
xa.setDrawLabels(true);
xa.setTextSize(14);
Log.e("Logger:Utility", "setMyDevice-IT IS A TABLET");
} else {
xa.setLabelRotationAngle(-55);
xa.setTextSize(10);
Log.e("Logger:Utility", "setMyDevice-IT IS A MOBILE");
}
}
/* End of setMyDevice() */