2016-12-04 2 views
1

Я пытаюсь реализовать горизонтальную шкалу времени. Итак, я написал код для проектирования горизонтальной линии, но я могу понять, как я напишу текст по выше и ниже строки.Установить текст в горизонтальной временной строке

Еще одна вещь, я не хочу использовать какую-либо другую библиотеку.

Target ImageT

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

timeline_segment.xml

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android"> 
<LinearLayout 
    android:weightSum="1" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:padding="3dp" 
     android:textAlignment="textEnd" 
     android:text="Top" 
     android:id="@+id/top_data" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 


     <TextView 
      android:layout_gravity="center" 
      android:layout_weight="0.5" 
      android:background="@color/alphabet_a" 
      android:layout_width="wrap_content" 
      android:layout_height="2dp" /> 

     <ImageView 
      android:background="@drawable/circle1" 
      android:layout_width="15dp" 
      android:layout_height="15dp" /> 

     <TextView 
      android:layout_weight="0.5" 
      android:layout_gravity="center" 
      android:background="@color/alphabet_a" 
      android:layout_width="wrap_content" 
      android:layout_height="2dp" /> 

    </LinearLayout> 


    <TextView 
     android:padding="3dp" 
     android:gravity="center" 
     android:text="bottom" 
     android:id="@+id/bottom_data" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</LinearLayout> 
</merge> 

timeline_segment.java

public class timeline_segement extends LinearLayout { 

    View rootView; 
    TextView upperText; 
    TextView startLine; 
    TextView endLine; 
    ImageView circleView; 
    TextView bottomText; 

    public timeline_segement(Context context) { 
     super(context); 
     init(context); 
    } 

    public timeline_segement(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    public timeline_segement(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     init(context); 
    } 


    private void init(Context context) { 

     rootView=inflate(context, R.layout.timeline_segment, this); 

     upperText=(TextView) rootView.findViewById(R.id.top_data); 
     bottomText=(TextView) rootView.findViewById(R.id.bottom_data); 

     upperText.setText("Top"); 
     bottomText.setText("Bottom"); 

    } 

    public void setUpperText(String string) 
    { 
     upperText.setText(string); 
    } 

    public void setBottomText(String string) 
    { 
     bottomText.setText(string); 
    } 

} 
+0

Вам нужен настраиваемое представление для достижения этой цели. Вы можете либо собирать готовые представления, либо выполнять полный обычай. – efemoney

+0

Можете ли вы предоставить мне ссылку, откуда я могу проверить код. –

+0

ну и сроки я думаю, он должен быть динамически создан, это означает, что каждый раз вы будете добавлять новую пулю вправо? В этом случае вы можете создавать представление программно каждый раз, когда хотите добавить новое представление. Это означает, что вам нужно будет создать вертикальную ориентацию LinearLayout, которая будет иметь 2 текстовых вида и 1 строку. –

ответ

0

Решил ответить, потому что комментарий коробка любопытное ограничение. Это мой комментарий:

Для этого вам понадобится пользовательский вид. Вы можете либо собирать готовые виды, либо полностью настраиваться

Если вы выбираете композитные виды, то начинаете с разбивки этого уровня изображения по уровню. На самом высоком уровне его горизонтальный макет с 'TimelineCell' (или что бы вы ни назвали его).

TimelineCell будет в основном вертикальный LinearLayout с правом выровненной TextView, A View, который рисует линию и еще один центр выровненную TextView.

Затем вы можете создать их программно и добавить их в родительский горизонтальный LinearLayout.

Если вы, тем не менее, решили выполнить полный заказ, Youll придется обрабатывать измерение, компоновку и рисование всех компонентов, включая текст выше и ниже строки.

Посмотрите на this link для хорошего введения в пользовательские представления на андроид

+0

эй .. Я пытаюсь создать пользовательский просмотр, но я не могу получить. Можете ли вы помочь с этим. Я добавил java и xml-файл –

+0

Эй. Я понял ошибку. спасибо –

+1

Эй, @AnkurKhandelwal, Рад, что вы его исправили. – efemoney

Смежные вопросы